我只有一个JFrame
然后按层次结构我创建了一些JPanel
来最终使我的按钮和文本字段以及其他组件转到我想要的位置。我只有一个类MainWindow
,其中包含一组面板和按钮以及绑定到它们的文本字段。此外,所有组件都是MainWindow
类的字段。
现在我只创建了一个实现ButtonHandler
的内部类ActionListener
,我只是检查e.getSource() == <name of the button>
。
然后我调用适当的方法来处理它。这里有几个代码
private class ButtonHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == submit) {
AppHelper helper = new AppHelper();
if (helper.addRecord(personName.getText(),
itemName.getText(),
itemCost.getText(),
consoleArea)) {
consoleArea.append("Record added to database...\n");
itemName.requestFocusInWindow();
}
}
if(e.getSource() == clear) {
itemName.setText("");
itemCost.setText("");
personName.setText("");
consoleArea.append("All items cleared...\n");
}
if(e.getSource() == exit) {
frame.dispose();
System.exit(0);
}
if(e.getSource() == search) {
AppHelper helper = new AppHelper();
helper.search(months.getSelectedItem().toString(),
year.getText(), consoleArea);
}
if(e.getSource() == calculate) {
AppHelper helper = new AppHelper();
helper.calculate(months.getSelectedItem().toString(),
year.getText(), consoleArea);
}
if(e.getSource() == deleteFile) {
AppHelper helper = new AppHelper();
helper.deleteFile(months.getSelectedItem().toString(),
year.getText(), consoleArea);
}
}
}
我有一个registerListerner()
方法注册(名字暗示)。
private void registerListeners() {
itemName.addFocusListener(new SelectAllHandler());
itemCost.addFocusListener(new SelectAllHandler());
personName.addFocusListener(new SelectAllHandler());
year.addFocusListener(new SelectAllHandler());
submit.addActionListener(new ButtonHandler());
clear.addActionListener(new ButtonHandler());
exit.addActionListener(new ButtonHandler());
search.addActionListener(new ButtonHandler());
calculate.addActionListener(new ButtonHandler());
deleteFile.addActionListener(new ButtonHandler());
}
那么,这是个好主意吗?我是Swing的新手,基本上是GUI。所以任何帮助都将不胜感激。
答案 0 :(得分:0)
为不同的操作设置单独的处理程序是不是更好:
class SearchHandler implement ActionListener {
public SearchHandler(AppHelper helper) {
this.helper = helper;
}
public void actionPerformed(ActionEvent e) {
helper.search(months.getSelectedItem().toString(), year.getText(), consoleArea);
}
}
与其他操作相同,然后创建一个独特的帮助程序来构建处理程序:
AppHelp helper = new AppHelper();
submit.addActionListener(new SubmitHandler(helper));
clear.addActionListener(new ClearHandler(helper));
exit.addActionListener(new ExitHandler(helper));
search.addActionListener(new SearchHandler(helper));
更好的选择是使用Action
,从而使用处理程序的代码为您的按钮提供必要的图标,快捷方式等。阅读Java教程。