?? dataexchangetest.java
字號:
//DataExchangeTest.java
//一個能進行數據交流的圖形界面程序
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DataExchangeTest
{
public static void main(String[] args)
{
DataExchangeFrame frame = new DataExchangeFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
//菜單的框架,包含"File"關聯,顯示一個關鍵詞對話
class DataExchangeFrame extends JFrame
{
public DataExchangeFrame()
{
setTitle("數據交流測試");
setSize(WIDTH, 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);
// Exit 項目的返回程序
JMenuItem exitItem = new JMenuItem("返回");
exitItem.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
fileMenu.add(exitItem);
textArea = new JTextArea();
getContentPane().add(new JScrollPane(textArea),
BorderLayout.CENTER);
}
public static final int WIDTH = 300;
public static final int HEIGHT = 200;
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(
"用戶姓名 = " + u.getName()
+ ", 密碼= " + (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);
// 創建 Ok and Cancel 命令鈕由它們終止對話
JButton okButton = new JButton("Ok");
okButton.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
ok = true;
dialog.setVisible(false);
}
});
JButton cancelButton = new JButton("Cancel");
okButton.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);
}
//設置對話默認程序u,默認用戶信息
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)
{
owner = null;
dialog = new JDialog(owner, true);
dialog.getContentPane().add(this);
dialog.pack();
}
// 設置標題和顯示對話
dialog.setTitle(title);
dialog.show();
return ok;
}
private JTextField username;
private JPasswordField password;
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;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -