📄 querydialog.java
字号:
/* * cs101 QueryDialog * $Id: QueryDialog.java,v 1.1.1.1 2002/06/05 21:56:32 root Exp $ * * Developed for "Rethinking CS101", a project of Lynn Andrea Stein's AP Group. * For more information, see <a href="http://www.ai.mit.edu/projects/cs101/">the * CS101 homepage</a> or email <las@ai.mit.edu>. * * Copyright (C) 1996 Massachusetts Institute of Technology. * Please do not redistribute without obtaining permission. */package cs101.awt;import java.awt.*;import java.awt.event.*;/** * A class to display a toplevel dialog box with a message, * a list of "things" and associated textfields, and get answers. * * <P>Copyright (c) 1998 Massachusetts Institute of Technology * * @author Todd C. Parnell, tparnell@ai.mit.edu * @author <nathanw@mit.edu> * @version $Id: QueryDialog.java,v 1.1.1.1 2002/06/05 21:56:32 root Exp $ */public class QueryDialog extends Frame { private String message; private String[] fields,values; private TextComponent[] entries; private Button ok; /** Create a hidden QueryDialog with the appropriate text and defaults. */ public QueryDialog(String message, String[] fields, String[] values) { this.message=message; this.fields=fields; this.values=values; } /** Display the dialog box, and block until the OK button is checked. */ public synchronized String[] ask() { Label l; int i; this.removeAll(); GridBagLayout gridbag = new GridBagLayout(); this.setLayout(gridbag); GridBagConstraints gbc,gblabel,gbarea; gbc = new GridBagConstraints(); gblabel = new GridBagConstraints(); gbarea = new GridBagConstraints(); gbc.gridwidth=1; gbc.gridheight=1; gbc.fill=GridBagConstraints.BOTH; gbc.weightx=1; gbc.weighty=1; gblabel=(GridBagConstraints) gbc.clone(); gbarea=(GridBagConstraints) gbc.clone(); gbarea.gridwidth=GridBagConstraints.REMAINDER; gblabel.gridwidth=GridBagConstraints.RELATIVE; gbc.gridwidth=GridBagConstraints.REMAINDER; String[] lines = getLines(message); for(i=0;i<lines.length;i++) { l = new Label(lines[i]); gridbag.setConstraints(l,gbc); add(l); } gbarea.gridwidth=GridBagConstraints.REMAINDER; entries = new TextComponent[fields.length]; for(i=0;i<fields.length;i++) { l = new Label(fields[i]); gridbag.setConstraints(l,gblabel); add(l); entries[i] = new TextField(values[i],40); entries[i].setEditable(true); gridbag.setConstraints(entries[i],gbarea); add(entries[i]); } gbc.gridheight=1; /* Close the window when OK is checked. */ ok = new Button("OK"); gridbag.setConstraints(ok,gbc); ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); synchronized (QueryDialog.this) { QueryDialog.this.notifyAll(); } } }); add(ok); this.pack(); this.show(); try { this.wait(); } catch (InterruptedException e) { } return this.getValues(); } private String[] getLines(String s) { int i,pos,prev; int lines=countLines(s); String[] ss=new String[lines]; i=0; prev=0; pos=s.indexOf('\n'); while(pos!=-1) { ss[i]=s.substring(prev,pos); prev=pos+1; // First character after the newline pos=s.indexOf('\n',prev); i++; } ss[i]=s.substring(prev); return ss; } /** Count lines in a string */ private int countLines(String s) { char[] c = new char[s.length()]; int i,lines=1; s.getChars(0,s.length()-1,c,0); for(i=0;i<c.length;i++) if(c[i]=='\n') lines++; return lines; } /** Create a hidden QueryDialog with the appropriate text. */ public QueryDialog(String message, String[] fields) { this(message,fields,new String[fields.length]); } public void setValues(String[] newfields) { int i,max; if(fields.length < newfields.length) max=fields.length; else max=newfields.length; for(i=0;i<max;i++) { fields[i]=newfields[i]; } } /** Return the last entered values for the field. */ public String[] getValues() { String[] data=new String[entries.length]; int i; for(i=0;i<entries.length;i++) data[i]=entries[i].getText(); return data; }} /* * $Log: QueryDialog.java,v $ * Revision 1.1.1.1 2002/06/05 21:56:32 root * CS101 comes to Olin finally. * * Revision 1.4 1998/07/24 17:06:30 tparnell * Placate new javadoc behavior * * Revision 1.3 1998/07/22 18:18:40 tparnell * migration from cs101.util to cs101.* * * Revision 1.2 1998/06/03 21:29:02 tparnell * migration from Java 1.0 to 1.1 * */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -