这是我的代码
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.applet.Applet;
class Panell implements ActionListener {
JButton button;
JButton buttonTwo;
JButton buttonThree;
JButton buttonFour;
JButton buttonFive;
JTextArea textArea;
public static void main(String[] args) {
Panell gui = new Panell ();
gui.go();
}
void go() {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setBackground(Color.darkGray);
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
button = new JButton("Monday");
buttonTwo = new JButton("Tuesday");
buttonThree = new JButton("Wednesday");
buttonFour = new JButton("Thursday");
buttonFive = new JButton("Friday");
textArea = new JTextArea();
button.addActionListener(this);
buttonTwo.addActionListener(this);
buttonThree.addActionListener(this);
buttonFour.addActionListener(this);
buttonFive.addActionListener(this);
panel.add(button);
panel.add(buttonTwo);
panel.add(buttonThree);
panel.add(buttonFour);
panel.add(buttonFive);
frame.add(BorderLayout.CENTER, textArea);
frame.getContentPane().add(BorderLayout.WEST, panel);
frame.setSize(300,300);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event) {
if(event.getSource() == button) {
textArea.setText("I've been clicked!");
} else {
System.exit(1);
}
{
if(event.getSource() == buttonTwo) {
textArea.setText("herro");
} else {
System.exit(1);
}
}
}
}
按下按钮时它会一直退出?任何想法?
以及如何添加更多动作侦听器?
答案 0 :(得分:2)
只有当所有条件(按下按钮)都失败时,你应该退出(不是吗?)不是其中之一。
你可以使用类似的东西:
if(event.getSource() == button) {
textArea.setText("I've been clicked!");
} else if(event.getSource() == buttonTwo) {
textArea.setText("herro");
} else if(...
...//any other check
} else {
System.exit(1); //button not found :(
}
答案 1 :(得分:0)
您的申请因“System.exit(1)”而关闭。
在这种情况下,比较“==”是正确的,因为您比较了对象引用。但是你总是要确定你是否比较引用或对象。因此,更改代码更安全:
event.getSource() == button
到这个
event.getSource().equals(button)
此外,你应该检查你的if:如果事件源不是“按钮”(星期一),你的“其他”退出你的应用程序。永远不会达到下一个比较(到buttonTwo)。
如果第一个比较符合,下一个比较将失败,并且下一个“else”(第二个比较)将再次退出您的应用程序。
将您的代码更改为以下内容:
public void actionPerformed(ActionEvent event) {
if (event.getSource().equals(button)) {
textArea.setText("I've been clicked!");
} else if (event.getSource().equals(buttonTwo)) {
textArea.setText("herro");
} else {
System.exit(1);
}
}