在netbeans IDE中创建gui应用程序时,
它生成2个文件,App.java和View.java
可以在view.java中包含应用程序逻辑吗?我的直觉告诉我这是一个坏主意。但是,我不知道如何调用方法或以某种方式“钩”App.java与View.java
因此,我不必将所有代码都放在按钮的actionPerformed上,而只是从App.java中插入一个方法
我对Java很新。如果有人有关于Netbeans的好教程或书籍,我想我会买它。
答案 0 :(得分:1)
另一个好方法是学习和使用Action Classes。见How to Use Actions
这样的Action类封装了一个工作单元(“login”,“print”,...),你只需将它附加到一个或多个gui元素(JButton,JMenu,...)。如果您使用此概念,您的应用程序可以更容易地增长。分离应用程序逻辑,GUI和数据总是一个好主意。
public class ShowListAction extends AbstractAction {
JTextArea listArea;
YourListHandler listHandler;
public ShowListAction() {
this.putValue(Action.NAME,"Show List");
// this.putValue(Action.SMALL_ICON, yourIcon); // You can set various Properties for your Action...
this.setEnabled(enabled); // You can enable/disable the Action and hence any JButton connected to it ....
}
public void setListArea(JTextArea listArea) {
this.listArea = listArea;
}
public void setListHandler(YourListHandler listHandler) {
this.listHandler = listHandler;
}
public void actionPerformed(ActionEvent e) {
// Here comes the actual work
// list with data injected from another class which handles that
List<String> list = listHandler.getNamesList();
// output - correct
for (String s : list) {
listArea.append(s);
}
}
}
要使用此功能,您需要在视图中创建/获取操作的实例,并将其附加到例如带有
的JButtonyourButton.setAction(theAction)
答案 1 :(得分:0)
取决于有多少代码。如果您只使用少量UI组件来完成整个应用程序,那么您可以将逻辑放入视图中。
但是在略大(实际上几乎每个)应用程序中,您需要定义自己的类,然后创建它们的实例。如果是这样,请尝试将所有逻辑行为放在某些类中,然后在View类中创建实例。
例如,如果你想在JTextArea中写一些列表,那么在那里创建它并将其写在那里并不是很好。
糟糕的做法:
public void actionPerformed(java.awt.event.ActionEvent evt) {
// whole logic done here - bad
List<String> list = new ArrayList<String>();
list.add("John");
list.add("Mike");
list.add("Joe");
// output - correct
for (String s : list) {
jTextArea.append(s);
}
}
好方法:
public void actionPerformed(java.awt.event.ActionEvent evt) {
// list with data injected from another class which handles that
List<String> list = new ListHandler().getNamesList();
// output - correct
for (String s : list) {
jTextArea.append(s);
}
}