5

こんにちは、JButton の Action リスナーを実装しようとしています。コードは次のようになります。

ImageIcon imageForOne = new ImageIcon(getClass().getResource("resources//one.png"));
one = new JButton("",imageForOne);
one.setPreferredSize( new Dimension(78, 76));
one.addActionListener(myButtonHandler);

上記の JButton を使用すると問題なく表示されますボタン 1 については、下の画像を参照してください。

たとえば、ボタンに特定の値を追加すると

ImageIcon imageForOne = new ImageIcon(getClass().getResource("resources//one.png"));
//Check this
one = new JButton("one",imageForOne);
one.setPreferredSize( new Dimension(78, 76));
one.addActionListener(myButtonHandler);

次の画像のようになります

チェックボタン 1

これを回避して値を設定する方法はありますか。

事前にご協力いただきありがとうございます。

4

3 に答える 3

5

個人的には、ActionAPIを使用します。

これにより、アクション コマンドの階層を定義したり (それが必要な場合)、コマンドに対する自己完結型の応答を定義したりできます。

あなたは出来る...

public class OneAction extends AbstractAction {
    public OneAction() {
        ImageIcon imageForOne = new ImageIcon(getClass().getResource("resources//one.png"));
        putValue(LARGE_ICON_KEY, imageForOne);
    }

    public void actionPerfomed(ActionEvent evt) {
        // Action for button 1
    }
}

次に、ボタンで使用するだけです...

one = new JButton(new OneAction());
one.setPreferredSize( new Dimension(78, 76));

例えば...

于 2013-06-15T00:46:11.767 に答える
4

アクション リスナーでクリックされたボタンを判断する代わりに、アダプター パターンを使用します。

one.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent arg0) {
        handleClick("one");
    }        
});

どこhandleClickでもすべてのボタンのハンドラーにすることができます。

于 2013-06-14T14:13:35.077 に答える
3

その値を取得して、アクション リスナーで使用したいと考えています。

これには action コマンドを使用します。

one.setActionCommand("1");

ただし、表示コンポーネントに挿入する実際のテキストを使用することをお勧めします。次に、次のようなコードを使用して、すべてのボタンで ActionListener を共有できます。

ActionListener clicked = new ActionListener() 
{
    @Override
    public void actionPerformed(ActionEvent e) {
        String text = e.getActionCommand()
        // displayComponent.appendText(text);
    }        
};

one.addActionListener(clicked);
two.addActionListener(clicked);
于 2013-06-14T15:02:07.793 に答える