0

さて、テキストフィールドと通常のテキスト、さらには画像を表示することはできますが、ボタンを表示することはできません。残りの部分も同じ手順を実行したため、何が間違っているのかわかりません。どんな助けでも大歓迎です!

package EventHandling2;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

import EventHandling.GUITest;

public class EventMain extends JFrame{

    private JLabel label;
    private JButton button;

    public static void main(String[] args) {
        EventMain gui = new EventMain ();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // when click x close program
        //gui.setSize(600, 300);
        gui.setVisible(true);
        gui.setTitle("Button Test");
    }

    public void EventMain(){
        setLayout(new FlowLayout());

        button = new JButton ("click for text");
        add(button);

        label = new JLabel ("");
        add(label);

        Events e = new Events();
        button.addActionListener(e);
    }

    public class Events implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            label.setText("Now you can see words");
        }
    }
}
4

3 に答える 3

4

問題はメソッドにあります: void EventMain()

コンストラクターには戻り値の型がありません。「空白」を削除するだけです。コードは問題なく動作します。

于 2013-06-09T04:19:31.120 に答える
0

まず、のコンストラクターvoidでキーワードを削除する必要があります。EventMain次に、JPanelコンポーネントを作成してそこに追加し、を に追加JPanelJFrame.contentPaneます。

次のコードが機能するはずです。

public class EventMain extends JFrame {

    private final JLabel label;
    private final JButton button;

    public static void main(String[] args) {
        EventMain gui = new EventMain();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // when click x
                                                            // close program
        gui.setSize(600, 300);
        gui.setTitle("Button Test");
        gui.setVisible(true);

    }

    public EventMain() {
        // setLayout(new FlowLayout());
        JPanel panel = new JPanel(new FlowLayout());
        button = new JButton("click for text");
        panel.add(button);

        label = new JLabel("");
        panel.add(label);

        Events e = new Events();
        button.addActionListener(e);

        this.getContentPane().add(panel);
    }

    public class Events implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            label.setText("Now you can see words");
        }
    }
}
于 2013-06-09T07:06:47.963 に答える
0

actionListener(e) に​​マイナーな制御構造エラーが含まれています:

public void actionPerformed(ActionEvent e) {
        label.setText("Now you can see words");
}

への変更:

public void actionPerformed(ActionEvent e) {
        if (e.getSource() == button) {
           label.setText("Now you can see words");
        }
}
于 2013-06-09T04:17:11.093 に答える