JComboBox

  • Themenstarter Themenstarter waxalot
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
W

waxalot

Gast
Halli hallo,

ich habe ein Problem mit der "JComboBox"...
Nachdem ich so eine ComboBox in meinen Frame eingeführt habe, wird sie zwar angezeigt,
doch beim anklicken öffnet sie sich nicht, also ich kann die einzelnen Elemente nicht auswählen.
Kann soetwas vielleicht daran liegen, weil sie sich in einem Panel befindet?

Bitte um antwort.....
peace
 
[schild=7 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Code kann immer helfen[/schild]

Und es hätte auch Daten in der Combobox?
 
Ok, dies ist der Code dazu:


....
Code:
Panel paneoben, paneobenlinks;
JComboBox boxsort;

paneoben = new Panel(new GridLayout(1,2));
paneobenlinks = new Panel();
paneobenlinks.setLayout(null);

// Panel-obenlinks definieren...
lasort = new JLabel("Sortieren nach...");
boxsort = new JComboBox();
boxsort.addItem("Nummer");
boxsort.addItem("Name");
	
paneobenlinks.add(lasort);
paneobenlinks.add(boxsort);
lasort.setBounds(20,20,100,20);
boxsort.setBounds(20,45,100,30);
paneoben.add(paneobenlinks);
		
this.getContentPane().add(paneoben);
 
Ich weiss ehrlich gesagt nicht, an was das liegt. Aber wenn ich noch ein "validate" hineinfüge, funktioniert es bei mir:

Code:
paneoben.add(paneobenlinks);
boxsort.validate();
this.getContentPane().add(paneoben);
 
Hi nochmal,

also ich habe mich dazu entschlossen die einzelnen Komponenten nun durch die "normalen" AWT Komponenten zu ersetzen, denn die machen keine Probleme.... =)

Allerdings kenne ich zur Zeit keine alternative zur "JComboBox" und deshalb wollte ich die drin lassen. Es tritt immer der Fehler auf, dass wenn ich die ComboBox benutzen will, ich danach dann nichts anderes mehr benutzen kann!
Irgendwie hängt das Fenster dann......

Hier nochmal der komplette Code:

...
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class GUI_Admin extends JFrame{
	
	Panel paneoben, panemitte, paneunten, paneobenlinks, paneobenrechts;
	MenuBar menubar;
	Menu menu;
	MenuItem menuitem;
	Button buneu, budetails, buloeschen, busearch;
	JComboBox boxsort;
	TextField fieldsearch;
	Label lasort, lasearch, lamitarbeiter;
	
	
	// Konstruktor
	public GUI_Admin(){
		
		super("Mitarbeiterverwaltung...");
		// Fenster Listener zum schliessen wird aktiviert...
		addWindowListener(new WindowAdapter(){
			
			public void windowClosing(WindowEvent e){
				
				dispose();
				System.exit(0);
								
			} // Ende der Methode "windowClosing()"
			
		}); 
		
		this.getContentPane().setLayout(new GridLayout(3,1));
		setSize(400,400);
		setResizable(false);
		
		// Menubar wird initialisiert...
		menubar = new MenuBar();
		menu = new Menu("Menü");
		menuitem = new MenuItem("Sortieren...");
		menu.add(menuitem);
		menubar.add(menu);
		setMenuBar(menubar);
		
		// Panel´s definieren...	
		paneoben = new Panel(new GridLayout(1,2));
		panemitte = new Panel(new BorderLayout());
		paneunten = new Panel();
		paneunten.setLayout(null);
		paneobenlinks = new Panel();
		paneobenlinks.setLayout(null);
		paneobenrechts = new Panel();
		paneobenrechts.setLayout(null);
		
		// Panel-unten definieren...
		
		buneu = new Button("Neu");
		buneu.setBounds(50,30,70,30);
		budetails = new Button("Details");
		budetails.setBounds(150,30,80,30);
		buloeschen = new Button("Löschen");
		buloeschen.setBounds(260,30,90,30);
		lamitarbeiter = new Label("Mitarbeiter");
		lamitarbeiter.setBounds(50,10,90,20);
		
		paneunten.add(buneu);
		paneunten.add(budetails);
		paneunten.add(buloeschen);
		paneunten.add(lamitarbeiter);
		
		// Panel-obenlinks definieren...
		lasort = new Label("Sortieren nach...");
		boxsort = new JComboBox();
		boxsort.addItem("Nummer");
		boxsort.addItem("Name");
				
		paneobenlinks.add(lasort);
		paneobenlinks.add(boxsort);
		lasort.setBounds(20,20,100,20);
		boxsort.setBounds(20,45,100,30);
		paneoben.add(paneobenlinks);
		
		buneu.validate();
		budetails.validate();
		buloeschen.validate();
		
		lasort.validate();
		boxsort.validate();
		
		// Panel-obenrechts definieren...
		lasearch = new Label("Nach Namen suchen...");
		fieldsearch = new TextField();
		fieldsearch.setEditable(true);
		busearch = new Button("Suchen");
		
		paneobenrechts.add(lasearch);
		paneobenrechts.add(fieldsearch);
		paneobenrechts.add(busearch);
		lasearch.setBounds(20,20,90,20);
		fieldsearch.setBounds(20,40,100,20);
		busearch.setBounds(20,65,90,20);
		paneoben.add(paneobenrechts);
		
		lasearch.validate();
		fieldsearch.validate();
		busearch.validate();

		this.getContentPane().add(paneoben);
		this.getContentPane().add(paneunten);
		
		paneoben.validate();
		
		setVisible(true);
	} // Ende des Konstruktors
	
	
} // Ende der Klasse "GUI_Admin

Bitte helft mir..... =)
 
uff, Swing und AWT sollte man nicht mischen, versuch mal ausschliesslich Swing zu verwenden (Panel -> JPanel...)
http://www.java-forum.org/de/viewtopic.php?t=5113

Denn das JPopupMenu der JComboBox ist lightweight, aber das Panel auf dem es liegt heavyweight. Es ist nun aber so, dass eine heavyweight-Component immer über einer lightweight-Component liegt...

Code:
class GUI_Admin extends JFrame{
   
   JPanel paneoben, panemitte, paneunten, paneobenlinks, paneobenrechts;
   JMenuBar menubar;
   JMenu menu;
   JMenuItem menuitem;
   JButton buneu, budetails, buloeschen, busearch;
   JComboBox boxsort;
   JTextField fieldsearch;
   JLabel lasort, lasearch, lamitarbeiter;
   
   
   // Konstruktor
   public GUI_Admin(){
      
      super("Mitarbeiterverwaltung...");
      // Fenster Listener zum schliessen wird aktiviert...
      addWindowListener(new WindowAdapter(){
         
         public void windowClosing(WindowEvent e){
            
            dispose();
            System.exit(0);
                        
         } // Ende der Methode "windowClosing()"
         
      });
      
      this.getContentPane().setLayout(new GridLayout(3,1));
      setSize(400,400);
      setResizable(false);
      
      // Menubar wird initialisiert...
      menubar = new JMenuBar();
      menu = new JMenu("Menü");
      menuitem = new JMenuItem("Sortieren...");
      menu.add(menuitem);
      menubar.add(menu);
      setJMenuBar(menubar);
      
      // Panel´s definieren...   
      paneoben = new JPanel(new GridLayout(1,2));
      panemitte = new JPanel(new BorderLayout());
      paneunten = new JPanel();
      paneunten.setLayout(null);
      paneobenlinks = new JPanel();
      paneobenlinks.setLayout(null);
      paneobenrechts = new JPanel();
      paneobenrechts.setLayout(null);
      
      // Panel-unten definieren...
      
      buneu = new JButton("Neu");
      buneu.setBounds(50,30,70,30);
      budetails = new JButton("Details");
      budetails.setBounds(150,30,80,30);
      buloeschen = new JButton("Löschen");
      buloeschen.setBounds(260,30,90,30);
      lamitarbeiter = new JLabel("Mitarbeiter");
      lamitarbeiter.setBounds(50,10,90,20);
      
      paneunten.add(buneu);
      paneunten.add(budetails);
      paneunten.add(buloeschen);
      paneunten.add(lamitarbeiter);
      
      // Panel-obenlinks definieren...
      lasort = new JLabel("Sortieren nach...");
      boxsort = new JComboBox();
      boxsort.addItem("Nummer");
      boxsort.addItem("Name");
            
      paneobenlinks.add(lasort);
      paneobenlinks.add(boxsort);
      lasort.setBounds(20,20,100,20);
      boxsort.setBounds(20,45,100,30);
      paneoben.add(paneobenlinks);
      
      buneu.validate();
      budetails.validate();
      buloeschen.validate();
      
      lasort.validate();
      boxsort.validate();
      
      // Panel-obenrechts definieren...
      lasearch = new JLabel("Nach Namen suchen...");
      fieldsearch = new JTextField();
      fieldsearch.setEditable(true);
      busearch = new JButton("Suchen");
      
      paneobenrechts.add(lasearch);
      paneobenrechts.add(fieldsearch);
      paneobenrechts.add(busearch);
      lasearch.setBounds(20,20,90,20);
      fieldsearch.setBounds(20,40,100,20);
      busearch.setBounds(20,65,90,20);
      paneoben.add(paneobenrechts);
      
      lasearch.validate();
      fieldsearch.validate();
      busearch.validate();

      this.getContentPane().add(paneoben);
      this.getContentPane().add(paneunten);
      
      paneoben.validate();
      
      setVisible(true);
   } // Ende des Konstruktors
   
   
} // Ende der Klasse "GUI_Admin
 
D A N K E !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Sehr gut. =)

Ich habe aber leider noch ein Problem...

Wenn ich einen Button drücke und danach einen anderen drücken möchte, ist das System so träge, dass der erste Button erstmal nochmal aktiviert wird, bevor der andere gedrückt wird. Woran liegt das?
Ich hoffe, dass ich mich verständlich ausgedrückt habe. 🙂

peace
 
Wenn ich nur den Code von oben nehme, hab ich diese Probleme nicht.

Hast du vielleicht irgendeinen ausgefallenen Windows-Style auf deinem PC oder... ???:L
 
Hi, nö eigentlich habe ich hier nichts besonderes....

Es ist irgendwie seltsam....

Mein Problem zeigt sich auch dadurch, dass sobald ich irgendetwas in meinem Frame benutze, die "äusseren" Windows-Komponenten wie z.B. "schliessen (X)" dann nicht mehr reagieren. Wenn ich allerdings keinen Button in menem Frame aktiviere, dann kann ich ganz normal das Fenster mit "X" schliessen. Woran hängt sich mein Programm auf? Ne Ahnung?

peace
 
:bahnhof:

Hast du vielleicht irgendwelche Algorithmen die lange herumrechnen und den AWT-Thread blockieren?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben