如何在java中注册Jmenus的事件处理程序
因此,我正在处理一项任务,我只是被Java GUI卡住了,将事件注册到Jmenus,这是到目前为止的问题和我的代码:完成FrontEnd.java,它将允许用户注册客户端并查看所有注册的客户端。当用户单击“打开”菜单项时,应用程序将在桌面上显示“frmClient”表单。用户将填写客户名称、姓氏、地址(街道名称、门牌号、城市和区号以“,”逗号分隔)、客户id和访问目的。因此,当用户单击“保存客户端”菜单项时,应用程序将收集值以填充客户端对象,并使用FileManager将其保存在“ClientsRecords.txt”上。此外,如果用户单击“读取所有客户端”菜单 项,应用程序将读取所有注册的客户端,并使用FileManager将它们显示在名为“recordArea”的textArea上。最后,当用户单击“退出”菜单项时,应用程序将关闭应用程序。请参见图1以获取说明如何在java中注册Jmenus的事件处理程序,java,swing,actionlistener,jmenu,Java,Swing,Actionlistener,Jmenu,因此,我正在处理一项任务,我只是被Java GUI卡住了,将事件注册到Jmenus,这是到目前为止的问题和我的代码:完成FrontEnd.java,它将允许用户注册客户端并查看所有注册的客户端。当用户单击“打开”菜单项时,应用程序将在桌面上显示“frmClient”表单。用户将填写客户名称、姓氏、地址(街道名称、门牌号、城市和区号以“,”逗号分隔)、客户id和访问目的。因此,当用户单击“保存客户端”菜单项时,应用程序将收集值以填充客户端对象,并使用FileManager将其保存在“Clients
public class FrontEnd extends JFrame
{
private JMenuBar menuBar = new JMenuBar();
private JMenu fileMenu = new JMenu("File");
private JMenuItem openItem = new JMenuItem("Open");
private JMenuItem exitItem = new JMenuItem("Exit");
private JMenuItem saveItem = new JMenuItem("Save Client");
private JMenuItem readItem = new JMenuItem("Read All Clients");
private JTextArea recordsArea = new JTextArea(20, 30);
private JDesktopPane desktop = new JDesktopPane();
private JInternalFrame frmClient = new JInternalFrame("Register Client ", true, true, true);
private JLabel lblName = new JLabel("Enter Client name");
private JLabel lblSurname = new JLabel("Enter Client surname");
private JLabel lblAddress = new JLabel("Enter Address street, houseNo, city, areaCode");
private JLabel lblClientID = new JLabel("Enter Client ID");
private JLabel lblPurpose = new JLabel("Enter purpose of visit");
private JTextField txtName = new JTextField(15);
private JTextField txtSurname = new JTextField(15);
private JTextField txtAddress = new JTextField(15);
private JTextField txtClientID = new JTextField(15);
private JTextField txtPurpose = new JTextField(15);
static Client[] client;
int rows = 0;
public FrontEnd() {
setSize(600, 400);
setLocation(10, 10);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Client Management");
setJMenuBar(menuBar);
menuBar.add(fileMenu);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(readItem);
fileMenu.add(exitItem);
saveItem.addActionListener(new StoreHandler());
readItem.addActionListener(new AdHandler());
frmClient.setSize(600, 400);
frmClient.setLocation(10, 10);
frmClient.setLayout(new BorderLayout());
JPanel leftPane = new JPanel();
leftPane.setLayout(new GridLayout(6, 2));
leftPane.add(lblName);
leftPane.add(txtName);
leftPane.add(lblSurname);
leftPane.add(txtSurname);
leftPane.add(lblAddress);
leftPane.add(txtAddress);
leftPane.add(lblClientID);
leftPane.add(txtClientID);
leftPane.add(lblPurpose);
leftPane.add(txtPurpose);
leftPane.setBorder(BorderFactory.createTitledBorder("Register"));
JPanel rightPane = new JPanel();
rightPane.setBorder(BorderFactory.createTitledBorder("View Details"));
JScrollPane scrollpane = new JScrollPane(recordsArea);
rightPane.add(scrollpane);
frmClient.add(leftPane, BorderLayout.WEST);
frmClient.add(rightPane, BorderLayout.CENTER);
//add the desktop for multiple frames
add(desktop);
}
public static void main(String[] args) {
FrontEnd frontEnd;
frontEnd = new FrontEnd();
frontEnd.setVisible(true);
int numberOfClients = Integer.parseInt(JOptionPane.showInputDialog(null, "How many clients do you want to register?"));
client = new Client[numberOfClients];
}
private class AddHandler implements ActionListener {
public void actionPerformed(ActionEvent evt) {
String name,
surname,
address,
clientID,
purposeOfVisit;
name = txtName.getText();
surname = txtSurname.getText();
address = txtAddress.getText();
clientID = txtClientID.getText();
purposeOfVisit = txtPurpose.getText();
if (client.length() > row) {
client[row] = new Client(name, surname, address, clientID, purposeOfVisit);
row++;
}
else {
JOptionPane.showMessageDialog(null, "All records are added");
}
}
}
private class StoreHandler implements ActionListener {
public void actionPerformed(ActionEvent evt) {
FileManager manage = new FileManager();
try {
manage.registerClient("c:\\data\\client.txt", client);
JOptionPane.showMessageDialog(null, "All records are stored");
}
catch(Exception er) {
JOptionPane.showMessageDialog(null, "Error occured" + er.getMessage());
}
}
}
private class DisplayHandler implements ActionListener {
public void actionPerformed(ActionEvent evt) {
FileManager manage = new FileManager();
try {
Client[] clientRecords = manage.readClients("c:\\data\\client.txt");
for (Client record: clientRecords) {
recordsArea.append(record.toString());
}
}
catch(Exception er) {
JOptionPane.showMessageDialog(null, "Error occured" + er.getMessage());
}
}
}
}将事件注册到Jmenus,-您不能在Jmenus上处理事件。将ActionListener
添加到JMenuItem
中。有关更多信息和工作示例,请阅读上Swing教程的部分。