Re: How do you set an Icon into a JButton?
- From: "Phil Powell" <phillip.s.powell@xxxxxxxxx>
- Date: 23 Mar 2007 07:09:49 -0700
On Mar 22, 12:14 pm, Ian Wilson <scoblo...@xxxxxxxxxxxxx> wrote:
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)
Thanx! Here is the fixed method:
/**
* Handle {@link javax.swing.JButton}
* @param button {@link javax.swing.JButton}
*/
private void handleButton(JButton button) {
try {
ImageIcon icon = IconHandler.createImageIcon(
System.getProperty("com.ppowell.applications.globals.rockpaperscissorsglobals.FILE_SRC_PATH")
+
FileFunctionality.buildFilePath(RockPaperScissorsGlobals.IMAGE_PATH_ARRAY) /
* EXCLUDE 1 BACKSLASH */ +
File.separator +
button.getText().toLowerCase().trim() +
"." +
System.getProperty("com.ppowell.applications.globals.rockpaperscissorsglobals."
+
button.getText() + "_ICON_EXT"));
icon = IconHandler.scaleImageIcon(icon, 16, 16);
button.setIcon(icon);
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);
}
The problem resulted in my attempt to set an .ico file as Icon, and
apparently that is not possible in Java as ".ico" is not recognized as
a legitimate image. Switching to a JPEG image instead was just fine.
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
.
- References:
- How do you set an Icon into a JButton?
- From: Phil Powell
- Re: How do you set an Icon into a JButton?
- From: Ian Wilson
- How do you set an Icon into a JButton?
- Prev by Date: Re: ResultSet and getArray() - Error on AWT
- Next by Date: Re: Requesting tips, comments for an EDT thread-safe game architecture
- Previous by thread: Re: How do you set an Icon into a JButton?
- Next by thread: solution
- Index(es):