import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DataExchangeTest
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
DataExchangeFrame frame = new DataExchangeFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class DataExchangeFrame extends JFrame
{
public DataExchangeFrame()
{
setTitle("图形界面开发测试");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
JMenuBar mbar = new JMenuBar();
setJMenuBar(mbar);
JMenu fileMenu = new JMenu("菜单");
mbar.add(fileMenu);
JMenuItem connectItem = new JMenuItem("数据库连接");
connectItem.addActionListener(new ConnectAction());
fileMenu.add(connectItem);
JMenuItem exitItem = new JMenuItem("退出");
exitItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
fileMenu.add(exitItem);
TextArea = new JTextArea();
add(new JScrollPane(TextArea),BorderLayout.CENTER);
}
public static final int DEFAULT_WIDTH = 1024;
public static final int DEFAULT_HEIGHT = 768;
private PasswordChooser Dialog = null;
private JTextArea TextArea;
private class ConnectAction implements ActionListener
{
public void actionPerformed(ActionEvent Event)
{
if (Dialog == null)Dialog = new PasswordChooser();
Dialog.setUser(new User("用户名",null));
if (Dialog.showDialog(DataExchangeFrame.this,"Connect"))
{
User u = Dialog.getUser();
TextArea.append("user name = " + u.getName()+ ",password = " + (new String(u.getPassword()))+ "/n");
}
}
}
}
class PasswordChooser extends JPanel
{
public PasswordChooser()
{
setLayout(new BorderLayout());
JPanel Panel = new JPanel();
Panel.setLayout(new GridLayout(2,2));
Panel.add(new JLabel("用户名:"));
Panel.add(username = new JTextField(""));
Panel.add(new JLabel("密码"));
Panel.add(password = new JPasswordField(""));
add(Panel , BorderLayout.CENTER);
okButton = new JButton("确定");
okButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent Event)
{
ok = true;
Dialog.setVisible(false);
}
});
JButton cancelButton = new JButton("退出");
cancelButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent Event)
{
Dialog.setVisible(false);
}
});
JPanel buttonPanel = new JPanel();
buttonPanel.add(okButton);
buttonPanel.add(cancelButton);
add(buttonPanel, BorderLayout.SOUTH);
}
public void setUser(User u)
{
username.setText(u.getName());
}
public User getUser()
{
return new User(username.getText(),password.getPassword());
}
public boolean showDialog(Component parent,String title)
{
ok = false;
Frame Owner = null;
if (parent instanceof Frame)Owner = (Frame)parent;
else Owner = (Frame) SwingUtilities.getAncestorOfClass(Frame.class,parent);
if(Dialog ==null|| Dialog.getOwner()!=Owner)
{
Dialog = new JDialog(Owner,true);
Dialog.add(this);
Dialog.getRootPane().setDefaultButton(okButton);
Dialog.pack();
}
Dialog.setTitle(title);
Dialog.setVisible(true);
return ok;
}
private JTextField username;
private JPasswordField password;
private JButton okButton;
private boolean ok;
private JDialog Dialog;
}
class User
{
public User(String aName,char[] aPassword)
{
name = aName;
password = aPassword;
}
public String getName()
{
return name;
}
public char[] getPassword()
{
return password;
}
public void setName(String aName)
{
name = aName;
}
public void setPassword(char[] aPassword)
{
password = aPassword;
}
private String name;
private char[] password;
}