Hallo,
ich denke ich habe ein kurzes, schnell lösbares Problem.
Ich brauche eine einfache Oberfläche, für die mir die Funktionalität von AWT in Frames ausreicht. Bis auf einen Punkt. Bei einem Button hätte ich gern ein kleines Icon.
Google spuckt haufenweise gute kleine Codesamples aus, die mir auch alle völlig logisch erscheinen. Dennoch, wenn ich den einzigen Button mit Bild nun als JButton deklariere und ein Bild draufsetzen will gibt es Probleme mit der Darstellung, die sich folgendermaßen äußern:
Windows: Button wird samt Icon erst dann gezeigt, wenn man mit der Mouse drüberfährt (getestet mit Programmstart aus Eclipse und von der Konsole)
Mac: Button wird gar nicht angezeigt (getestet mit Programmstart aus Eclipse)
Hier die brisanten Teile des Codes extrahiert zu einem kleinen Beispielprogrämmchen ohne weitere Funktionalität:
Ich vermute irgendwas extentielles für die richtige Verwendung von JButton habe ich vergessen. Aber mir fällt auch einfach nicht mehr ein, wonach ich dann nun suchen soll...
ich denke ich habe ein kurzes, schnell lösbares Problem.
Ich brauche eine einfache Oberfläche, für die mir die Funktionalität von AWT in Frames ausreicht. Bis auf einen Punkt. Bei einem Button hätte ich gern ein kleines Icon.
Google spuckt haufenweise gute kleine Codesamples aus, die mir auch alle völlig logisch erscheinen. Dennoch, wenn ich den einzigen Button mit Bild nun als JButton deklariere und ein Bild draufsetzen will gibt es Probleme mit der Darstellung, die sich folgendermaßen äußern:
Windows: Button wird samt Icon erst dann gezeigt, wenn man mit der Mouse drüberfährt (getestet mit Programmstart aus Eclipse und von der Konsole)
Mac: Button wird gar nicht angezeigt (getestet mit Programmstart aus Eclipse)
Hier die brisanten Teile des Codes extrahiert zu einem kleinen Beispielprogrämmchen ohne weitere Funktionalität:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.SwingConstants;
public class ButtonDemo extends Frame
{
static ButtonDemo eineDemo;
//Menueleiste
ImageIcon bild = new ImageIcon("home.gif");
JButton home = new JButton(bild);
Button back = new Button(),
fwd = new Button();
AktionsAbhoerer einAbhoerer;
public static void main(String args[])
{
eineDemo = new ButtonDemo();
eineDemo.setSize(640,480);
eineDemo.setVisible(true);
}
public ButtonDemo()
{
//overall
setLayout(null);
setUndecorated(true);
setSize(640,480);
setBackground(Color.white);
//Menueleiste
add(home);
home.setBounds(0, 15, 55, 44);
home.setBackground(Color.LIGHT_GRAY);
home.setHorizontalAlignment(SwingConstants.CENTER);
home.setVerticalAlignment(SwingConstants.CENTER);
home.setIcon(bild);
/* home.setIcon(bild); bringt keine Änderung, auch ohne ist der Button unter
Windows sichtbar, sobald die Mouse rüberhuscht. Die Funktion home.setRolloverEnabled(false);
setze wird der Hintergrund sogar transparent */
add(back);
back.setBounds(540, 15, 50, 44);
back.setBackground(Color.LIGHT_GRAY);
back.setLabel("<");
add(fwd);
fwd.setBounds(590, 15, 50, 44);
fwd.setBackground(Color.LIGHT_GRAY);
fwd.setLabel(">");
einAbhoerer = new AktionsAbhoerer(this);
}
public void paint (Graphics g)
{
g.drawRect(0, 15, 55, 44); //Markierung der Fläche, wo der Button erscheinen soll
}
}
Ich vermute irgendwas extentielles für die richtige Verwendung von JButton habe ich vergessen. Aber mir fällt auch einfach nicht mehr ein, wonach ich dann nun suchen soll...