Каждый раз, когда я нажимаю кнопку, она выходит?(слушатель действия) - PullRequest
0 голосов
/ 29 сентября 2011

вот мой код

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);
            }
        }
    }
}

Он продолжает выходить, когда я нажимаю кнопку?какие-нибудь идеи?

, а также как я могу добавить больше слушателей действия?

Ответы [ 2 ]

2 голосов
/ 29 сентября 2011

Вы должны выйти (не так ли?), Только если все условия (нажатие кнопок) не выполнены.Ни один из них.Вы можете использовать что-то вроде:

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 :(
}
0 голосов
/ 29 сентября 2011

Ваше приложение закрывается из-за вашего "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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...