2013-06-14 2 views
5

Привет я пытаюсь выполнить действий слушателя для JButton и код выглядеть так:JButton фоновое изображение

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

Используя выше JButton он выглядит отлично See the image below for button 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); 

Он похож на следующее изображение

Check button 1

Есть ли способ, я могу избежать этого и установите его значение тоже.

Спасибо за вашу помощь заранее.

+1

Почему вы хотите установить метку если вы все равно не хотите отображать его? (Я боюсь, что вы хотите обработать клик на основе имени кнопки, но это не путь.) –

+0

@Heuster Я хочу получить эту ценность и использовать ее на прослушивании действий. У меня есть другой код для прослушивателя действий, если вы хотите, я тоже могу опубликовать его. спасибо – usrNotFound

+0

Я согласен с Heuster. Вместо того, чтобы использовать текст ярлыка JButton для изменения действия, создайте пользовательский ActionListener для каждой кнопки и вставьте значение конкретной кнопки в ActionListener. Текст ярлыка предназначен для графического отображения и не предназначен для использования в качестве дескриптора объекта. – Bobulous

ответ

5

Лично я бы с помощью Action API.

Это позволит вам определить иерархию команд действия (если это то, что вы хотите), а также определить автономный ответ на команды.

Вы могли бы ...

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

Например ...

4

Вместо определения кнопки щелкнул в слушателе действий, я хотел бы использовать шаблон адаптера:

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

где handleClick все еще может быть обработчик для всех кнопок.

3

Я хочу получить эту ценность и использовать ее на прослушивании действий.

Вы можете использовать команду действий для этого:

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

Спасибо, что это легенда. – usrNotFound

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