3

ボタンをクリックした場合、現在の JPanel を取得するにはどうすればよいですか?

ボタンを作成してアクションリスナーを追加し、イベント処理を行う方法を知っています。現在のパネルを選択する方法がわかりません。

4

3 に答える 3

2
public void buildUI() {
    JFrame frame = new JFrame();
    final JPanel panel = new JPanel();
    JButton button = new JButton("Button");
    panel.add(button);
    button.addActionListener( new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            System.out.println("The current panel is " + panel);
        }

    });
    frame.add(panel);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}

編集: リスナー コードが GUI コードと同じクラスにない例を追加します。

//PanelPrintingListener.java
public class PanelPrintingListener implements ActionListener {

    private JPanel panel;

    public PanelPrintingListener(JPanel panel) {
        this.panel = panel;
    }

    public void actionPerformed(ActionEvent e) {
        System.out.println("The current panel is " + panel);
    }

}

//OtherFoo.java
public void buildUI() {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    JButton button = new JButton("Button");
    panel.add(button);
    button.addActionListener( new PanelPrintingListener(panel) );
    frame.add(panel);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}
于 2013-04-24T12:29:16.627 に答える