JButton background image

usrNotFound picture usrNotFound · Jun 14, 2013 · Viewed 26k times · Source

Hi i am trying to implement Action listener for JButton and code look like following:

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

Using the above JButton it looks fineSee the image below for button 1

When i add specific value to button for e.g.

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

It look like the following image

Check button 1

Is there any way i can avoid this and set the value too.

Thanks for your help in advance.

Answer

MadProgrammer picture MadProgrammer · Jun 15, 2013

Personally, I would be using the Action API.

It will allow you defined a hierarchy of action commands (if that's what you want) as well as define self contained response to the commands.

You could...

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
    }
}

Then you would simply use with your button...

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

For example...