Re: How do you set an Icon into a JButton?



Phil Powell wrote:
I thought my method would handle this dynamically, but I was way off:

[code]
/**
* Handle {@link javax.swing.JButton}
* @param button {@link javax.swing.JButton}
*/
private void handleButton(JButton button) {
try {
String text = button.getText();
ImageIcon icon = new ImageIcon(
System.getProperty("com.ppowell.applications.globals.rockpaperscissorsglobals.SRC_PATH")
+
FileFunctionality.buildFilePath(RockPaperScissorsGlobals.IMAGE_PATH_ARRAY,
true) /* EXCLUDE 1 BACKSLASH */ +
File.separator +
button.getText().toLowerCase().trim() +
".ico");
button = new JButton(text, icon);

After this statement, button is no longer "pointing at" (a reference to) the button displayed on your panel. From here on you are manipulating a completely separate and invisible button (invisible because it hasn't been added to any visible component).

Replace the above line with
button.setText(text);
button.setIcon(icon);
(Untested - I've no idea if these are the appropriate methods)


Dimension dim = new Dimension(icon.getIconWidth(),
icon.getIconHeight());
button.setSize(dim);
button.setPreferredSize(dim);
button.setMaximumSize(dim);
} catch (Exception e) {
e.printStackTrace();
}
button.setFocusable(false);
button.setSelected(false);
button.addActionListener(RockPaperScissors.this);
button.setMnemonic(button.getText().charAt(0));
button.setFont(RockPaperScissorsGlobals.FONT);
}
[/code]

Instead I see JButtons with no icons, looking dead normal, and worse,
setFocusable(false) is ignored; the JButtons look like they've been
clicked!

What did I do so wrong this time?
Thanx
Phil

.


Quantcast