Zum Inhalt springen

Einträge von JComboBox werden von JTextField verdeckt


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich habe in meinem JFrame das Problem, dass die Liste der verfügbaren Einträge meiner JCombobox von dem darunterliegenden JTextField verdeckt werden. Weiß jemand, wie ich das beheben kann?

Das Problem tritt sproadisch auf, auf mein JFrame setzt ich das BorderLayout, die einzelnen Komponenten in einem JPanel mit GridLayout.

Gruß

Alex

Geschrieben (bearbeitet)

Ich hatte früher mal den Fehler gemacht das GridBagConstraints Objekt vor dem initialisieren und setzen mit setConstraints() nie neu anzulegen. Ich habe praktisch immer das gleiche Objekt verwendet und nur neu initialisiert.

Das führte dazu, dass die Elemente nie so wirklich genau so positioniert waren wie ich wollte.

Vielleicht machst du es auch so und es kommt deswegen zu dem Problem das SWING nicht erkennt, dass es an der Stelle das JTextField eigentlich überdecken muss.

Beispiel wie es sein sollte:

[B]gbc = new GridBagConstraints();[/B]

gbc.insets = new Insets(2,2,2,2);

gbc.ipadx = 0;

gbc.gridx = 0;  	  

gbc.gridheight = 1;

textFieldRateValueA.setDocument(new RateFieldDocument());

gbl.setConstraints(textFieldRateValueA, gbc);

panel.add(textFieldRateValueA);  


[B]gbc = new GridBagConstraints();[/B]

gbc.insets = new Insets(2,2,2,2);

gbc.gridx = 1;  	

gbc.gridy = 0;  

gbc.gridheight = 1;

rateLabelx.setText(":");

gbl.setConstraints(rateLabelx, gbc);

panel.add(rateLabelx);


[B]gbc = new GridBagConstraints();[/B]

gbc.insets = new Insets(2,2,2,2);

gbc.gridx = 2;  	

gbc.gridy = 0;  

gbc.gridheight = 1;

textFieldRateValueB.setDocument(new RateFieldDocument());

gbl.setConstraints(textFieldRateValueB, gbc);

panel.add(textFieldRateValueB);

ist nur ne Idee aber besser als nix ^^

Bearbeitet von -patrick-
Geschrieben

Hi Patrick,

danke für Deine Idee.

Leider nicht erfolgreich. Egal - ich hab die Dinger jetzt etwas weiter auseinander platziert, jetzt kommt es "seltener" zur fehlerhaften Darstellung.

Gruß

Alex

Geschrieben

Hi,

wahrscheinlich auch ein Heavyweight/Lightweight Problem.

Check mal ob alle Elemente von Swing kommen, oder ob du ein AWT Element dazwischen hast (z.B. BorderLayout), denn Swing ist Lightweight und AWT Heavy.

Konsequenz: Heavy > Light

A Farewell to Heavyweight/Lightweight Conflicts | Javalobby

Es gibt auch einen kleinen Hack, wo man einfach der schwachen Komponente per Methodenaufruf auf heavy setzt.

Zur Not suche ich dir den mal raus, hatte das Problem mit JMenu und Canvas.

Grüße

Geschrieben (bearbeitet)
öhm zui2000 könntest du die fachbegriffe da mal erklären die du in deiner antwort gesagt hast ^^ danke xDD

Den Link oben anklicken und lesen! :D

kurz: AWT hat eine höhere "Priorität" als Swing und dadruch überlappen sich manchmal Komponenten.

Bearbeitet von zui2000

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...