我一直试图让两个按钮工作。 但是,似乎actionPerformed无法看到我的按钮。
我尝试过的事情: - 检查我的import语句,它们似乎是正确的 - 检查缺少的括号 - 检查我是否意外地将actionPerformed放入构造函数中 - 检查了访问修饰符 - 检查变量名称
到目前为止,我迷失了为什么它无法解决button1和button2的符号。
请帮帮忙?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionListener;
public class Wisselscherm
extends JFrame
implements ActionListener {
public Wisselscherm(Wisselkoers wisselkoers){
String munt1 = String.valueOf(wisselkoers.getMunt1().getNaam() );
String munt2 = String.valueOf(wisselkoers.getMunt2().getNaam() );
setTitle(munt1 + " - " + munt2 + " Converter" );
setSize(500,500);
setLayout(new FlowLayout());
String teken1 = String.valueOf(wisselkoers.getMunt1().getTeken() );
JLabel munteenheid1 = new JLabel(teken1);
add(munteenheid1);
JTextField textf1 = new JTextField(10);
add(textf1);
JButton button1 = new JButton(">>");
add(button1);
button1.addActionListener(this);
JButton button2 = new JButton("<<");
button2.addActionListener(this);
add(button2);
String teken2 = String.valueOf(wisselkoers.getMunt2().getTeken() );
JLabel munteenheid2 = new JLabel(teken2);
add(munteenheid2);
JTextField textf2 = new JTextField(10);
add(textf2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button1) {
System.out.println("Button1 is pressed");
} else if (e.getSource() == button2) {
System.out.println("Button2 is pressed");
}
}
}
答案 0 :(得分:2)
您的按钮被定义为Wisselscherm
构造函数的局部变量,因此它们不能在其上下文之外访问
使它们成为实例变量,这样就可以从整个类中访问它们
使用anonymous listeners,这样您就可以将单个侦听器与每个按钮相关联,这意味着您可以获得触发ActionListener
利用actionCommand
和JButton
的{{1}}属性将侦听器与事件源分离,允许您重复使用ActionEvent
生成相同ActionListener
的其他按钮/操作。
默认情况下,actionCommand
将是按钮的文本,如果没有直接设置
使用actionCommand
API
全部或者,您应该仔细查看How to Write an Action Listeners,How to Use Actions和How to Use Buttons, Check Boxes, and Radio Buttons了解更多详情
答案 1 :(得分:2)
这是一个范围问题,只需将MainPage = new HomePage (Adapter, IsLoggedIn);
和button1
移到类的范围级别:
button2
然后你可以:
public class Wisselscherm extends JFrame implements ActionListener {
JButton button1;
JButton button2;
...
(请注意,我删除了该行中的button1 = new JButton(">>");
个字词)