JButton erscheint erst bei Mouseover

sheddy

Mitglied
Hallo,

ich habe ein JPanel auf dem mehrere JButtons sind. Nach dem ich das Panel ändere und mit revalidate neuaufbauen lasse, erscheinen die JButtons erst, wenn ich mit der Maus drüber fahre. Kann mir jemand erklären wie ich das Problem lösen kann?!

Gruß
Sdy
 

sheddy

Mitglied
Arg...anderer Fehler. Habe einen Block zu früh geschlossen, so dass eine Methode nicht mehr aufgerufen wurde, die alles neu validieren sollte.

Sorry...aber trotzdem dank für den Tipp.

Gruß
Sdy
 

sheddy

Mitglied
Jetzt taucht das Problem an einer anderen Stelle auf - wenn man die Größe des Fensters ändert.


1. Aufruf des Dialogs - Buttons sichtbar
2. Größe ändern - Buttons sichtbar
3. "Neuzeichnen" des JPanels und Buttons - Buttons sichtbar
4. Größe ändern - Buttons nicht sichtbar

Ich habe es schon mit einem ComponentAdapter an dem neuzuzeichnen Panel versucht. Dieser wird auch aufgerufen, jedoch bringen die Aufrufe von revalidate des Panels und validate des ganzen Dialogs nichts. Die Buttons sind erst nach einem erneutem Mouseover wieder sichtbar.


Gruß
Sdy
 

André Uhres

Top Contributor
Das Problem könnte eventuell entstehen, wenn wir Mal-Methoden wie "paintComponent" überschreiben, aber nicht die Super-Implementation aufrufen, wie z.B. "super.paintComponent(g)".

Gruß,
André
 

sheddy

Mitglied
Ich habe jedoch keine paintComponent-Methode überschrieben. Daher wüsste ich auch nicht, wo ich die Methode aufrufen sollte, da ich keine mEthdoe mit einem Graphics-Object als Parameter habe :/
 

André Uhres

Top Contributor
Ich fürchte, da bin ich mit meinem Latein am Ende. Vielleicht kann ein KSKB helfen, das musst du allerdings selber erstellen.

Gruß,
André
 

sheddy

Mitglied
So, mein Projekt war erst einmal auf Eis gelegt, daher jetzt erst die Rückmeldung.

Im Anhang hängt der reine SourceCode mit einem kompilierbaren Beispiel dran. Ich habe es so minimalistisch gehalten wie möglich, um wirklich nur das Problem zu zeigen.

Der Fehler zeigt sich wie folgt:

1. Im Menü neuen Tab aufmachen
2. In der Mitte auf den Button klicken

Nun taucht das Problem auf:

1. Der untere Button wird erst mal gar nicht dargstellt, sondern erst, wenn man mit der Maus drüber fährt.

2. Wenn man das Fenster vergrößert oder verkleinert, verschwinden die Buttons wieder und erscheinen erst beim Mouseover.

3. Wenn man in einem Tab das Layout bereits geändert hat (durch Klick auf den einzelnen Button), einen neuen Tab aufmacht und zwischen den Tabs wechselt, so verschwinden die beiden Buttons in dem Tab, in dem das Layout bereits geändert wurde und erscheinen erst wieder beim Mouseover.

Ich bin wirklich ratlos, was ich aufrufen muss, damit die Buttons, wie beim intialen Erstellen des Tabs mit dem einzelnen Button, immer angezeigt werden - auch nach einem Tab-Wechsel oder dem Vergrößern/Verkleinern des Fensters.

Vielen Dank für jegliche Hilfe.

Viele Grüße
Sdy

Hier noch einmal der Code fürs Forum:

Main.java

Java:
public class Main {

	public Main() {
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Hauptfenster();
	}

}

Hauptfenster

Java:
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTabbedPane;


public class Hauptfenster extends JFrame {
	
	public Hauptfenster(){
		super("Test");
		setSize(1000, 700); // groesse des fenster
		setMinimumSize(getSize());		
		setDefaultCloseOperation(EXIT_ON_CLOSE);		
		setResizable(true);		
		this.setVisible(true); // macht alle fenster sichtbar
		
		
		// Menü-Leiste
		JMenuBar menu = new JMenuBar();
		// Auswahl-Menü: Datei
		JMenu file = new JMenu("Datei");
		// Datei > Neu
		JMenu _new = new JMenu("Neu");		
		// Datei > Neu > Ehrenscheibe
		JMenuItem tab = new JMenuItem("Tab");		
		
		// Auswahlmenüs zur Leiste hinzufügen
		menu.add(file);	
		_new.add(tab);
		file.add(_new);
		setJMenuBar(menu);	
		
		JTabbedPane tabPane = new JTabbedPane();	
		
		// tabbedPane zum Fenster hinzufügen
		add(tabPane);
		
		
		tab.addActionListener(new TabEvent(tabPane));
	}

}

TabEvent

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JPanel;
import javax.swing.JTabbedPane;


public class TabEvent implements ActionListener {

	
	private JTabbedPane pane;
	
	public TabEvent(JTabbedPane pane) {
		// TODO Auto-generated constructor stub
		this.pane = pane;		
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		pane.addTab("asas", new TabPanel(pane));

	}

}

TabPanel

Java:
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;


public class TabPanel extends JPanel implements ActionListener {

	private JPanel centerPanel = null;
	private JTabbedPane tabPane = null;
	
	public TabPanel(JTabbedPane tabPane) {
		// TODO Auto-generated constructor stub
		this.tabPane = tabPane;
		
		setLayout(new BorderLayout());
		
		
		// Liste links
		JPanel listPanel =  new JPanel(new BorderLayout());		
		JList list = new JList();
		
		JScrollPane scroller = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		scroller.setPreferredSize(new Dimension(250, 0)); 
		listPanel.add(list, BorderLayout.CENTER);
		
		add(scroller, BorderLayout.WEST);
		
		
		_setLayout(0);

	}
	
	
	private void _setLayout(int type) {
		
		if(centerPanel != null){
			centerPanel.removeAll();
			centerPanel = null;
		}
		
		// Mitte des Tabs
		if(type == 0){
			centerPanel = new JPanel(new GridBagLayout());

			JButton btn = new JButton("Nummer 1");
			btn.addActionListener(this);

			centerPanel.add(btn);

			add(centerPanel);		
		}else{			
			centerPanel = new JPanel(new BorderLayout());
			
			JButton btn1 = new JButton("Nummer 1");
			JButton btn2 = new JButton("Nummer 2");
			
			centerPanel.add(btn1, BorderLayout.CENTER);
			centerPanel.add(btn2, BorderLayout.SOUTH);		
			
			
			add(centerPanel);			
		}
		
		if(centerPanel != null){
			centerPanel.revalidate();
			centerPanel.repaint();
			
			tabPane.revalidate();
		}
		
	}


	@Override
	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub
		_setLayout(1);
		
	}

	
}
 

Anhänge

  • src.zip
    2,1 KB · Aufrufe: 6
Zuletzt bearbeitet:

sheddy

Mitglied
Problem gelöst: Ich habe nur den Inhalt des centerPanels gelöscht und es erneut hinzugefügt. Ich denke mal, die beiden centerPanels haben sich überlagert, so dass es dort zu Problemen kam.

Habe es so gelöst, dass ich beim Hinzufügen statt add(component) nun add(component, index) verwende und dann gezielt mit dem index das Panel anspreche.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JButton erscheint erst bei mouse over Java Basics - Anfänger-Themen 3
L JButton erscheint nur mit pack() Java Basics - Anfänger-Themen 3
A JButton erscheint nicht (BlueJ) Java Basics - Anfänger-Themen 2
Hilde22 Neu Start JButton einfügen Java Basics - Anfänger-Themen 2
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
M JButton setBackground() färbt nicht den ganzen Knopf Java Basics - Anfänger-Themen 4
C JButton reagiert nicht auf actionListener Java Basics - Anfänger-Themen 15
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
J Jbutton blinkt Java Basics - Anfänger-Themen 5
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
E JButton und JTextField Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
J Erste Schritte if Abfrage von JButton in 2. Klasse Java Basics - Anfänger-Themen 27
J Erste Schritte Actionlistener für tbar/ JButton Java Basics - Anfänger-Themen 15
krgewb Icon von JButton ändern Java Basics - Anfänger-Themen 1
P JButton -Arrays Java Basics - Anfänger-Themen 4
A JButton in anderer Klasse bearbeiten. Java Basics - Anfänger-Themen 2
L Erste Schritte JButton reagiert nicht Java Basics - Anfänger-Themen 5
S Bild über JButton legen Java Basics - Anfänger-Themen 3
V Einem JButton anweisungen geben Java Basics - Anfänger-Themen 4
D Methoden JButton und JLabel in einer Methode erstellen Java Basics - Anfänger-Themen 5
F Interface JButton von anderer Klasse hinzufügen Java Basics - Anfänger-Themen 2
J JButton macht was er will Java Basics - Anfänger-Themen 3
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
H JButton - Wechsel der Textfarbe alle 500ms Java Basics - Anfänger-Themen 10
G KeyListener und JButton vertragen sich nicht Java Basics - Anfänger-Themen 1
N JButton anpassen Java Basics - Anfänger-Themen 3
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
D JButton in JDialog mit Action belgen Java Basics - Anfänger-Themen 6
V JButton einer anderen Klasse übergeben? Java Basics - Anfänger-Themen 6
F JButton [] mit Werten hinterlegen Java Basics - Anfänger-Themen 10
M Code um per jButton ein neues Fenster zu öffnen Java Basics - Anfänger-Themen 3
A weiter JButton Fehler Java Basics - Anfänger-Themen 3
W JTable mit einem JButton-Array füllen Java Basics - Anfänger-Themen 4
S JCombobox und JButton verknüpfen Java Basics - Anfänger-Themen 6
V wie kann ich eine Schleife pausieren, bis ein Jbutton gedrückt wird ? Java Basics - Anfänger-Themen 17
N Erste Schritte JButton reagiert nur einmal. Java Basics - Anfänger-Themen 12
S JButton Java Basics - Anfänger-Themen 2
A Farben wechseln mit JButton Java Basics - Anfänger-Themen 2
S Farbe eine Zeile in JTable ändern, wenn JButton geklickt wurd Java Basics - Anfänger-Themen 4
F Funktion eines JButton in einen Vektor verlagern Java Basics - Anfänger-Themen 4
S Interface JButton etc. wird in JFrame mit paint() nicht angezeigt Java Basics - Anfänger-Themen 6
A Labels Inner JButton Event Erstellbar? Java Basics - Anfänger-Themen 3
K JButton alles zurücksetzen Java Basics - Anfänger-Themen 1
U JButton: Beschriftung ueber Variable zuweisen Java Basics - Anfänger-Themen 6
S JButton mit ActionListener Java Basics - Anfänger-Themen 5
S JDK installieren JButton BorderPoints?! Java Basics - Anfänger-Themen 7
E Problem mit erben von JButton Java Basics - Anfänger-Themen 7
J Bei Hinzufügen von JButton Programm langsam Java Basics - Anfänger-Themen 3
J Verknüpfung von JButton to JTextField Java Basics - Anfänger-Themen 4
S Jbutton per Passworteingabe aktivieren Java Basics - Anfänger-Themen 2
G über JButton Action einen anderen Button verändern Java Basics - Anfänger-Themen 7
H JButton - Icon(.png) aus resources laden Java Basics - Anfänger-Themen 23
M Hintergrundbild für JButton Java Basics - Anfänger-Themen 6
A jbutton - icon linksbündig, text zentriert Java Basics - Anfänger-Themen 10
M Input/Output JFrame mit JButton und JTextfield Java Basics - Anfänger-Themen 114
J Hilfe bei JButton Java Basics - Anfänger-Themen 6
A JButton[] und String[] in doppelter For-Schleife Java Basics - Anfänger-Themen 4
W JButton in gleiche Größe bringen Java Basics - Anfänger-Themen 4
pg1337 JButton zuschneiden Java Basics - Anfänger-Themen 3
T Modales JDialog schliessen mit JButton Java Basics - Anfänger-Themen 2
D JButton Array setBackground Java Basics - Anfänger-Themen 2
F JButton wie selektierter JTabbebPane-Header Java Basics - Anfänger-Themen 7
G jButton bei Klick String +1 Java Basics - Anfänger-Themen 5
C OOP Java JButton mit Funktion belegen Java Basics - Anfänger-Themen 3
S JButton wird nicht angezeigt Java Basics - Anfänger-Themen 14
C JButton.getIcon() != null Java Basics - Anfänger-Themen 3
E JButton-Text wird in Schleife nicht geändert Java Basics - Anfänger-Themen 4
F welches Layout für JButton-Liste verwenden Java Basics - Anfänger-Themen 6
T JButton Text ändern Java Basics - Anfänger-Themen 4
U Passwort auf JButton setzen. Java Basics - Anfänger-Themen 2
E JButton Hintergrund / Rahmen entfernen? Java Basics - Anfänger-Themen 4
L Bild auf einem JButton Java Basics - Anfänger-Themen 4
K JButton.setText Problem Java Basics - Anfänger-Themen 6
M JButton und DisabledIcon Java Basics - Anfänger-Themen 2
K jButton zur Laufzeit hinzufügen Java Basics - Anfänger-Themen 22
A GUI - JButton problem! Java Basics - Anfänger-Themen 5
M JButton selbst nachprogrammieren Java Basics - Anfänger-Themen 3
A JButton Textrahmen Java Basics - Anfänger-Themen 7
A Platzierung eines JButton Java Basics - Anfänger-Themen 4
D JButton oder ImageIcon klickt "langsam" Java Basics - Anfänger-Themen 5
E JButton klassenübergreifend nutzen? Java Basics - Anfänger-Themen 6
R Liste graphischer Objekte z.B. JButton dynamisch erstellen Java Basics - Anfänger-Themen 13
J JList Inhalt nach JButton Klick aktualisieren Java Basics - Anfänger-Themen 8
S JButton trotz Box-Layout skalieren Java Basics - Anfänger-Themen 6
P JButton identifizieren Java Basics - Anfänger-Themen 8
K Funktion zu einem JButton hinzufügen Java Basics - Anfänger-Themen 27
D HTML Text von jButton disablen Java Basics - Anfänger-Themen 2
E Auf JButton in Arraylist zugreifen Java Basics - Anfänger-Themen 6
E Andere Form eines JButton Java Basics - Anfänger-Themen 17
A JButton ActionListener nach einmaligem Ausführen zurücksetzen Java Basics - Anfänger-Themen 13
B JButton Größe einstellen? Java Basics - Anfänger-Themen 3
E Zeilenumbruch in JButton mit Variable Java Basics - Anfänger-Themen 2
M JButton sieht komisch aus :-) Java Basics - Anfänger-Themen 5
B JPanel über JButton umändern Java Basics - Anfänger-Themen 9
D JButton transparent bekommen? Java Basics - Anfänger-Themen 5
H JButton Unsichtbar Java Basics - Anfänger-Themen 7
R JTextField mittels JButton in Konsole ausgeben Java Basics - Anfänger-Themen 2
J Variable die bei JButton Clicks mitzählt Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben