JButton wird nicht dargestellt

bossa

Mitglied
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:
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...
 
S

SlaterB

Gast
public void paint (Graphics g)
{
super.paint(g);

der super-Aufruf sorgt vielleicht dafür, dass der Rest richtig gemalt wird,
allgemein ist nicht zu empfehlen, gleichzeitig in einer Komponente zu malen als auch andere Objekte einzufügen,
wenn du aber einen Rahmen drumherum malen willst, gehts wohl anders kaum (außer Border in Swing)

Swing JButton besser nicht mit AWT Frame kombinieren, Frame + Button oder JFrame + JButton geht
 
M

MiDniGG

Gast
Hi,

probiere mal den add erst nach dem Bearbeiten zu machen:

Java:
home.setBounds(0, 15, 55, 44);
home.setBackground(Color.LIGHT_GRAY);       
home.setHorizontalAlignment(SwingConstants.CENTER);
home.setVerticalAlignment(SwingConstants.CENTER);
home.setIcon(bild);
add(home);//ERST HIER

Ansonsten könntest Du am Ende noch ein validate(); probieren.

Gruß
 

bossa

Mitglied
public void paint (Graphics g)
{
super.paint(g);
Funktioniert erstmal. Danke!


der super-Aufruf sorgt vielleicht dafür, dass der Rest richtig gemalt wird,
allgemein ist nicht zu empfehlen, gleichzeitig in einer Komponente zu malen als auch andere Objekte einzufügen,
wenn du aber einen Rahmen drumherum malen willst, gehts wohl anders kaum (außer Border in Swing)
Der Rahmen war nur, um zu zeigen wo der Button ist. Original ist der nicht dabei gewesen...


Swing JButton besser nicht mit AWT Frame kombinieren, Frame + Button oder JFrame + JButton geht
Bin ich auch angegangen, versuch das gleich noch mal.... Moment noch.


Hi,

probiere mal den add erst nach dem Bearbeiten zu machen:

Java:
home.setBounds(0, 15, 55, 44);
home.setBackground(Color.LIGHT_GRAY);       
home.setHorizontalAlignment(SwingConstants.CENTER);
home.setVerticalAlignment(SwingConstants.CENTER);
home.setIcon(bild);
add(home);//ERST HIER
Hat nichts geholfen... Schade, trotzdem danke!


Ansonsten könntest Du am Ende noch ein validate(); probieren.

Gruß
Auch nicht, leider...
 

bossa

Mitglied
So, JFrame noch mal getestet.

Unter Windows funktioniert es nur dann korrekt, wenn ich die Methode
Java:
super.paint(g);
aufrufe.

Unter Mac funktioniert es mithilfe von JFrame korrekt.



@SlaterB
Wenn ich nicht gleichzeitig Zeichnen und Elemente einfügen soll, was ist dann die empfohlene Variane? Es muss eine äußerst klare Darstellung auf sehr kleinem Display werden, deswegen wollte ich einige Linien zur optischen Abtrennung und einige leicht graue Hintergrundflächen haben, um einfach das kleine Display (voraussichtlich 5") gut optisch zu strukturieren.

Ein Schlagwort zum suchen reicht mir - ich will euch nicht so viel Mühe machen. :)
 
S

SlaterB

Gast
nun, die Alternative ist klar: painten in SubKomponenten,
Panel A enthält Buttons und Panel X, nur in X wird gemalt, in der ansonsten komplett freien Fläche, ohne störende andere GUI-Komponenten mittendrin,




in JFrame besser nicht die paint-Methode überschreiben, was in AWT halbwegs erlaub ist,
dort besser nur in Unter-JPanels malen (was in AWT teils auch gar nicht geht wenn ich mich recht erinnere),
und dann paintComponent überschreiben


Lesson: Performing Custom Painting (The Java™ Tutorials > Creating a GUI With JFC/Swing)
 

bossa

Mitglied
Hm,
wenn ich meinen Quelltext nach diesem (ja guten) Tutorial umschreibe, dann funktioniert setUndecorated() für das JFrame nicht mehr ;(

Nun gut, dann muss ich erstmal aufhören, muss nach Hause...
Danke soweit!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Swing JButton wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
E JButton wird nicht (sofort) angezeigt AWT, Swing, JavaFX & SWT 3
B JButton wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
B JButton Größe; Inhalt wird nicht angezeigt (.) AWT, Swing, JavaFX & SWT 4
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
M JButton wird von JTree überdeckt AWT, Swing, JavaFX & SWT 4
T JButton wird erst bei mouseover sichtbar AWT, Swing, JavaFX & SWT 2
G JButton mit importFiles-Funktion auf JDrawPane AWT, Swing, JavaFX & SWT 5
B JButton Search AWT, Swing, JavaFX & SWT 8
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
N Erlennen ob JButton gedrückt ist AWT, Swing, JavaFX & SWT 6
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Swing Kann man auf JButton zeichenen AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
A Swing JButton mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 6
F Swing Scrollbare Liste von JButton AWT, Swing, JavaFX & SWT 4
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
A Swing JButton aussehen AWT, Swing, JavaFX & SWT 12
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower Variable setzten mit JButton AWT, Swing, JavaFX & SWT 5
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
Joker4632 JButton nicht sichtbar, aber funktionsfähig AWT, Swing, JavaFX & SWT 8
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
B JButton -> Rahmen wegbekommen AWT, Swing, JavaFX & SWT 7
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
M Textfarbe JButton verändern AWT, Swing, JavaFX & SWT 2
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
stylegangsta MouseEvents aus JButton aufrufen AWT, Swing, JavaFX & SWT 3
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
M JButton - Listener AWT, Swing, JavaFX & SWT 1
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
HoloYoitsu Swing JButton in verschiedenen Winkeln drehen AWT, Swing, JavaFX & SWT 0
J vocab1 = new JButton(""+voc1.get(nr).toString()+""); AWT, Swing, JavaFX & SWT 16
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
I JFrame mit JButton schließen? AWT, Swing, JavaFX & SWT 0
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
J Swing JFrame slideout, wenn JButton gedrückt wurde AWT, Swing, JavaFX & SWT 0
S Swing Rückmeldung für JButton AWT, Swing, JavaFX & SWT 4
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
M Swing Mix JComboBox - JButton? AWT, Swing, JavaFX & SWT 6
U Event Handling JButton Actionevent: starte Spiel AWT, Swing, JavaFX & SWT 4
E JButton füllt ganzes JPanel auf AWT, Swing, JavaFX & SWT 6
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
W Swing JButton lässt sich nicht anzeigen AWT, Swing, JavaFX & SWT 8
Kandum Swing JButton - onclick -> Grafikfehler AWT, Swing, JavaFX & SWT 2
R JButton durch Enter auslösen AWT, Swing, JavaFX & SWT 7
T Swing JButton per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen


Oben