0

JButton にアクション リスナーがあり、ボタンに JTextArea があります。ただし、ボタンをクリックすると、テキスト領域がイベントを飲み込み、ボタンには何も起こりません。

エリアをクリックするにはどうすればよいですか?

ありがとうございました

ボタンコード

public class CustomFoodItemButton extends JButton{


    public JTextArea buttonTitle;
    /**
     * Public constructor
     * @param title
     */
    public CustomFoodItemButton(String title) {

        //Set button text by using a text area
        buttonTitle = new JTextArea();
        buttonTitle.setText(title);
        buttonTitle.setFont(new Font("Helvetica Neue", Font.PLAIN, 15));

        buttonTitle.setEditable(false);
        buttonTitle.setWrapStyleWord(true);
        buttonTitle.setLineWrap(true);
        buttonTitle.setForeground(Color.white);
        buttonTitle.setOpaque(false);


        //Add the text to the center of the button
        this.setLayout(new BorderLayout());
        this.add(buttonTitle,BorderLayout.CENTER);

        //Set the name to be the title (to track actions easier)
        this.setName(title);

        //Clear button so as to show image only
        this.setOpaque(false);
        this.setContentAreaFilled(false);
        this.setBorderPainted(false);

        //Set not selected
        this.setSelected(false);

        //Set image
        setImage();
    }

GUI クラス コード

private void addFoodItemButtons (JPanel panel){

        //Iterate over menu items
        for (FoodItem item : menuItems) {

            //Create a new button based on the item in the array. Set the title to the food name
            CustomFoodItemButton button = new CustomFoodItemButton(item.foodName);

            //Add action listener
            button.addActionListener(this);


        }
    }
4

1 に答える 1

1

編集複数行の JComponents については、この回答を確認してください: https://stackoverflow.com/a/5767825/2221461

物事を複雑にしすぎているように思えます。TextArea のテキストを編集できないのに、なぜボタンに TextArea を使用しているのですか?

JButtons には別のコンストラクターがあります。

JButton button = new JButton(item.foodname);

これにより、'item.foodname' の値をテキストとして持つボタンが作成されます。

次に、コンストラクターを単純化できます。

public class CustomFoodItemButton extends JButton {
    public CustomFoodItemButton(String title) {
        super(title);
        setName(title);
        setOpaque(false);
        setContentAreaFilled(false);
        setBorderPainted(false);
        setSelected(false);
        setImage();
    }
}

あなたの質問を誤解した場合はお知らせください。

于 2013-04-01T17:29:50.460 に答える