我有一个jFrame,用户在其中输入数据,还有一个控制器类,我想在其中将数据输入一个新对象。目前,我已经在jFrame中的按钮中添加了一个侦听器,但无法让它识别控制器类中的actionPerformed方法。
侦听器的“this”部分表示它正在泄漏到构造函数中,而类本身则表示:
“CreateAccountGUI不是抽象的,并且不会覆盖Action Listener中的抽象方法actionPerformed(actionEvent)”
我还有其他按钮,但它们使用双击控件时提供的默认构造函数。
下面是jFrame构造函数的代码:
public class CreateAccountGUI extends javax.swing.JFrame implements ActionListener{
/**
* Creates new form CreateAccountGUI
*/
public CreateAccountGUI() {
initComponents();
cboAccountType.setVisible(false);
lblAccountType.setVisible(false);
btnCreateAccount.addActionListener(this);
}
下面是我希望actionPerformed方法驻留的类中当前的代码:
public class AccountStrategyController implements ActionListener, Observer{
private CreateAccountGUI view = null;
public void setView(CreateAccountGUI view){
this.view = view;
view.setVisible(true);//Show the account creation form
}
@Override
public void actionPerformed(ActionEvent e) {
}
目前我在这门课上没有任何错误。
我在网上看了一下,似乎你可以在不同的课程中添加监听器和操作,但我似乎无法理解。
非常感谢您的帮助:)
我建议这样做:1。首先,在使用MVC(model view controller)结构时,必须区分文件。例如,您的第一个代码是一个从JFrame扩展而来的类。此类转到视图包,无法实现ActionListener。ActionListener适用于控制器。要将JFrame类与控制器链接,必须在“CreateAccountGUI”中创建如下方法:
public void registerControllers(AccountStrategyController controller) {
jButton.setActionCommand("JBUTTON");
jButton.addActionListener(controller);
}
然后,在actionPerformed()方法中,必须编写以下代码:
public void actionPerformed(ActionEvent e) {
switch(e.getActionCommand()) {
case "JBUTTON":
//Your code goes here
break;
}
}
为了使这个工作,在主类中,你必须在其中初始化GUI,你必须这样写:
public static void main(String[] args) {
// Elements de la interfície gràfica
CreateAccountGUI gui = new CreateAccountGUI();
AccountStrategyController asc = new AccountStrategyController();
gui.registerControllers(asc);
}
希望对你有帮助
你可以做:
public class CreateAccountGUI extends javax.swing.JFrame {
public CreateAccountGUI() {
/**/
JButton btnCreateAccount = new JButton("Create");
AccountStrategyController controller = new AccountStrategyController();
controller.setView(this);
btnCreateAccount.addActionListener(controller);
}
}
class AccountStrategyController implements ActionListener{
private CreateAccountGUI view = null;
public void setView(CreateAccountGUI view){
this.view = view;
view.setVisible(true);//Show the account creation form
}
@Override
public void actionPerformed(ActionEvent e) {
//respond to button click
}
}
或者更好:
public class CreateAccountGUI extends javax.swing.JFrame {
public CreateAccountGUI() {
/**/
JButton btnCreateAccount = new JButton("Create");
AccountStrategyController controller = new AccountStrategyController();
controller.setView(this);
btnCreateAccount.addActionListener(controller.createAccountListener());
}
}
class AccountStrategyController{
private CreateAccountGUI view = null;
public void setView(CreateAccountGUI view){
this.view = view;
view.setVisible(true);//Show the account creation form
}
public ActionListener createAccountListener(){
return new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//respond to button click
}
};
}
}
createAccountListener
可以使用lambdas编写:
public ActionListener createAccountListener(){
return e -> {
//respond to button click
};
}
问题内容: 这是由于尝试使我的html语义尽可能正确而导致的问题。 我有一个父按钮,它在同一页面中既起作用,又充当嵌套锚的大容器的父标签(重定向到另一个页面),而div标签又充当另一个按钮的父标签应该执行一些动作。 我尝试嵌套按钮,为它提供了一个类和ID,但我没有应用到该类的任何属性,并且对子按钮也没有执行ID,更多情况下,子按钮也完全脱离了大容器并放置在DOM就像它是一个完全独立的标记,没有其他
//Message()是类中的一个方法。
我必须插入一个JFrame,另一个类的一个JPanel。我在JFrame中有一个jMenuItem,我希望这样,当我单击jMenuItem,就会出现JPanel。
问题内容: 我有一JFrame堂课,它是在Netbeans的设计部分制作的。我正在尝试创建一个登录按钮,该按钮将关闭当前框架并打开另一个框架,无论如何我可以这样做吗? 我努力了: 但我希望它在设计部分中可编辑! 问题答案: 双击NETBEANS中的“登录”按钮,或在Click事件上添加事件监听器(ActionListener)
很多人可能都知道,我是一个完全的Java新手。我已经尝试过对此进行研究(通过阅读StackOverflow上的其他帖子,在谷歌上搜索,并询问一位不太熟悉java的朋友),但我无法理解。答案可能很清楚也很简单,但我对此视而不见。我试图从不同的帧中处理JFrame。 我的应用程序应该按如下方式工作: 帧X有一个按钮,按下时:生成帧Y 帧Y有一个按钮,按下时:生成帧Z Frame Z有一个按钮,按下时: