2013-04-01 3 views
0

У меня есть прослушиватель действий на JButton и JTextArea в кнопке. Однако, когда я нажимаю кнопку, область текста проглатывает событие, и ничего не происходит с кнопкой.JTextArea проглатывание JButton action listenener Java

Как я могу щелкнуть по области?

Спасибо

Код кнопки

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


     } 
    } 
+0

Добавлен код. –

+0

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

ответ

2

EDIT Для многострочных 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(); 
    } 
} 

Пожалуйста, дайте мне знать, если я неправильно ваш вопрос.

+0

Но текст не будет охватывать несколько строк ... Он будет только на одной строке. HTML не будет работать, чтобы разделить строку, потому что я не знаю, как долго длится строка –

+0

@waf Знаете ли вы, сколько строк разрешено? – RaptorDotCpp

+0

Нет, его чтение из файла, и что бы это ни было, это название кнопки. –

Смежные вопросы