package com.swing.demo; import java.awt.BorderLayout; import java.awt.Component; import java.awt.EventQueue; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingUtilities; /** * 数据替换测试 * * @author Administrator * */ public class DataExchchangeTest { 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("DataExchangTest"); setSize(300,200); JMenuBar mbr = new JMenuBar(); setJMenuBar(mbr); JMenu menu = new JMenu("File"); mbr.add(menu); JMenuItem connectionItem = new JMenuItem("Connect"); connectionItem.addActionListener(new ConnectionAction()); menu.add(connectionItem); JMenuItem exitItem = new JMenuItem("Exit"); exitItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); menu.add(exitItem); textArea = new JTextArea(); add(new JScrollPane(textArea),BorderLayout.CENTER); } PasswordChooser dialog = null; JTextArea textArea; //监听连接操作 class ConnectionAction implements ActionListener{ public void actionPerformed(ActionEvent arg0) { if(dialog == null) dialog = new PasswordChooser(); dialog.setUser(new User("your name ", 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("User name")); panel.add(username = new JTextField("")); panel.add(new JLabel("Password:")); panel.add(password = new JPasswordField("")); add(panel,BorderLayout.CENTER); okButton = new JButton("ok"); okButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { ok = true; dialog.setVisible(false); } }); JButton cancelButton = new JButton("Cancel"); cancelButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { dialog.setVisible(false); } }); JPanel buttonPanel = new JPanel(); buttonPanel.add(okButton); buttonPanel.add(cancelButton); add(buttonPanel,BorderLayout.SOUTH); } public User getUser() { return new User(username.getText(),password.getPassword()); } public void setUser(User user) { username.setText(user.getName()); } 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.setLocation(50,60); dialog.add(this); dialog.getRootPane().setDefaultButton(okButton); dialog.pack(); } dialog.setTitle(title); dialog.setVisible(true); return ok; } private JTextField username; private JPasswordField password; private boolean ok; private JButton okButton; private JDialog dialog; } class User{ public User(String aName,char[] aPassword){ name = aName; password = aPassword; } private String name; private char[] password; public String getName() { return name; } public void setName(String name) { this.name = name; } public char[] getPassword() { return password; } public void setPassword(char[] password) { this.password = password; } }