Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Einträge von JComboBox werden von JTextField verdeckt

Empfohlene Antworten

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

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-

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

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

ö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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.