Frage zu ComboBox

Status
Nicht offen für weitere Antworten.

Muffelhs

Mitglied
Hallo

wenn meine ComboBox aktiviert wird, dann wird automatisch das 1. objekt ausgewählt.

Wenn ich eine anderes Object in der Combobox auswähle passiert nichts

Warum klappt meine abfrage nicht?

Code:
  public void setFarben(){
	  	  
	  farben.setEnabled(true);
     	  
      if(farben.getSelectedItem().equals("schwarz")){ farbe = Color.black; console.setEnabled(true);}
      else if(farben.getSelectedItem().equals("blau")){ farbe = Color.blue;console.setEnabled(true);}
      else if(farben.getSelectedItem().equals("grün")){ farbe = Color.green;  console.setEnabled(true);}
      else if(farben.getSelectedItem().equals("orange")){ farbe = Color.orange; console.setEnabled(true);}
      else if(farben.getSelectedItem().equals("rot")){ farbe = Color.red;console.setEnabled(true);}	 
      
  }

wie kann ich die methode schrieben das diese auswahl funktioniert ?
Es wird immer das 1. Element selected somit klappen meine abfragen nicht egal ob ich etwas anderes auswähle
kann mir einer helfen ?

MfG

Muffel
 

hdi

Top Contributor
Für sowas nutzt man "Listener" - das Programm muss ja wissen was passieren
soll wenn du in der ComboBox auf etwas klickst.
Und wenn du klickst wird ein Event gefeuert, dass du im Listener abfangen und behandeln
kannst.

[HIGHLIGHT="Java"]myComboBox.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
JComboBox box = (JComboBox)e.getSource();
if(box.getSelectedItem().equals usw...)
}
});[/HIGHLIGHT]
 

Muffelhs

Mitglied
das problem ist ich habe mit getActionCommand schon von der auwahl davor die abfrage gemacht. Das ist sozusagen in dem anderen listener drin ..
hier nochmal der code dann wird es verständlich
Code:
public void actionPerformed(ActionEvent ae){
    String command = ae.getActionCommand();
    
    if(command.equals("figuren")){

      if(figuren.getSelectedItem().equals("Vieleck")){
        erweitert.setEnabled(true);
        
        if(erweitert.getSelectedItem().equals("Vieleck")){
        
        	setFarben();
       
        }
        else if(erweitert.getSelectedItem().equals("Rechteck")){
        	//EDIT!!!
        }
      }
      else if(figuren.getSelectedItem().equals("Kreis")){
    	  
        setFarben(); 
        
      }
    }

ich habe in fioguren erstmal den action listener drin mit
addActionlistener(this)
dann den command
setAction Commadn Figuren..

wenn ich auf figurne klicke und kreis auswähle dann soll ich zu der methode setFarben kommen

da klappt das noch also da kann ich abfragen mit figuren.getSelectedItem.equals("Kreis");
wenn ich das gleich dann in setFarben mache geht das nicht..

das mit dem action listener geht nicht weil ich ja schon figuren als action Command habe und das ist ja in figuren drin ..

ist das problem verständlich `?
 

hdi

Top Contributor
Ja okay, ich glaube ich weiss wo das Problem sein könnte.
Du reaktivierst die Box "farben" jedesmal neu in der setFarben() Methode.
Daher ist der evlt vorher gespeicherte selektierte Index verloren. Wenn
du nun prüfst was selected ist, ist es default-mässig der erste Wert.
Sprich: Entweder du lässt das deaktivieren und reaktiveren (setEnabled()) dieser
Box zur Laufzeit sein, oder du musst dir per Hand den selektierten Index irgendwo
abspeichern, bevor du sie deaktivierst, und dann in der setFarben() darauf zurückgreifen.
 

Muffelhs

Mitglied
Code:
else if(figuren.getSelectedItem().equals("Kreis")){
    	  //farben.setEnabled(true);
     	  
          if(farben.getSelectedItem().equals("schwarz")){ farbe = Color.black;console.setEnabled(true);}
          else if(farben.getSelectedItem().equals("blau")){ farbe = Color.blue;}
          else if(farben.getSelectedItem().equals("grün")){ farbe = Color.green;}
          else if(farben.getSelectedItem().equals("orange")){ farbe = Color.orange;}
          else if(farben.getSelectedItem().equals("rot")){ farbe = Color.red;}	 
          
        
      }

ich habe die combobox jetzt von anfang an aktiviert und es geht immernoch nicht ..
dh daran kann es nicht liegen

es ist so konfus das ich bei der oberen combobox die abfrage machen kann getSelectedObject.equals("Kreis");
und hier direkt dadrunter geht es nichtmehr...

woran kann es noch liegen ?

=/

hiernochmal der ganze code..

es gibt zwar vieleck rechteck usw.

Mache aber erstmal die Funktionen für Kreis fertig ...

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

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 27.03.2009
  * @author
  */

public class FigurenProgramm extends JFrame implements ActionListener {
  // Anfang Attribute
  private Color farbe = Color.white;
  private Point[] punkte = new Point[1];
  private int x = 0;
  private int y = 0;
  private String name = "";
  private double radius;
  
  private Canvas zf = new Canvas();
  private String[] jList1Data = {};
  private String[] jComboBox1Data = {};
  private JComboBox figuren = new JComboBox(jComboBox1Data);
  private String[] jComboBox2Data = {};
  private JComboBox erweitert = new JComboBox(jComboBox2Data);
  private String[] jComboBox3Data = {};
  private JComboBox erweitert_ = new JComboBox(jComboBox3Data);
  private String[] jComboBox4Data = {};
  private JComboBox farben = new JComboBox(jComboBox4Data);
  private JLabel namelb = new JLabel();
  private JTextField nameed = new JTextField();
  private JButton console = new JButton();
  private JButton erstellen = new JButton();
  // Ende Attribute

  public FigurenProgramm(String title) {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    int frameWidth = 982;
    int frameHeight = 533;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    zf.setSize(600,600);
    zf.setBackground(Color.white);
    cp.add(zf);
    
    namelb.setBounds(610, 20, 50, 16);
    namelb.setText("Name:");
    cp.add(namelb);

    nameed.setBounds(665,20,60,20);
    cp.add(nameed);
    
    figuren.setBounds(610, 50, 145, 24);
    figuren.addItem("Vieleck");
    figuren.addItem("Kreis");
    figuren.addActionListener(this);
    figuren.setActionCommand("figuren");
    cp.add(figuren);
    
    erweitert.setBounds(610, 72, 145, 24);
    erweitert.addItem("Auswahl");
    erweitert.addItem("Vieleck");
    erweitert.addItem("Rechteck");
    erweitert.addActionListener(this);
    erweitert.setActionCommand("erweitert");
    cp.add(erweitert);
    erweitert.setEnabled(false);
    
    erweitert_.setBounds(610, 95, 145, 24);
    erweitert_.addItem("Auswahl");
    erweitert_.addItem("Rechteck");
    erweitert_.addItem("Quadrat");
    erweitert_.addActionListener(this);
    erweitert.setActionCommand("erweitert_");
    cp.add(erweitert_);
    erweitert_.setEnabled(false);
    
    farben.setBounds(610, 136, 145, 24);
    farben.addItem("Auswahl");
    farben.addItem("schwarz");
    farben.addItem("blau");
    farben.addItem("grün");
    farben.addItem("orange");
    farben.addItem("rot");
    farben.addActionListener(this);
    farben.setActionCommand("farben");
    cp.add(farben);
    farben.setEnabled(false);

    console.setBounds(610, 176, 90, 25);
    console.setText("Konsole");
    console.addActionListener(this);
    console.setActionCommand("console");
    cp.add(console);
    console.setEnabled(false);
    
    erstellen.setBounds(610, 210, 90, 25);
    erstellen.setText("erstellen");
    erstellen.addActionListener(this);
    erstellen.setActionCommand("erstellen");
    cp.add(erstellen);
    erstellen.setEnabled(false);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  public void setFarben(){
	  	  
	  farben.setEnabled(true);
     	  
      if(farben.getSelectedItem().equals("schwarz")){ farbe = Color.black;}
      else if(farben.getSelectedItem().equals("blau")){ farbe = Color.blue;}
      else if(farben.getSelectedItem().equals("grün")){ farbe = Color.green;}
      else if(farben.getSelectedItem().equals("orange")){ farbe = Color.orange;}
      else if(farben.getSelectedItem().equals("rot")){ farbe = Color.red;}	 
      console.setEnabled(true);
  }
  
  public void actionPerformed(ActionEvent ae){
    String command = ae.getActionCommand();
    
    if(command.equals("figuren")){

      if(figuren.getSelectedItem().equals("Vieleck")){
        erweitert.setEnabled(true);
        
        if(erweitert.getSelectedItem().equals("Vieleck")){
        
        	//EDIT!!!
       
        }
        else if(erweitert.getSelectedItem().equals("Rechteck")){
        	//EDIT!!!
        }
      }
      else if(figuren.getSelectedItem().equals("Kreis")){
    	  farben.setEnabled(true);
     	  
         setFarben();
      }
    }
    else if(command.equals("console")){

      TextIO.putln("");
      TextIO.put("Bitte geben Sie den X Wert an: ");
      x = TextIO.getlnInt();
      TextIO.put("Bitte geben Sie den Y Wert an: ");
      y = TextIO.getlnInt();

      Point punkt = new Point(x,y);
      punkte[0]= punkt;

      TextIO.putln("");
      TextIO.put("Bitte geben Sie den Radius an: ");
      radius = TextIO.getlnDouble();
      erstellen.setEnabled(true);
    }
    else if(command.equals("erstellen")){

      Kreis k = new Kreis(radius,name,farbe,punkte);
      zf.setForeground(k.getFarbe());
      k.zeichne(zf.getGraphics());
    }
    
    
  }
    // Ende Methoden

    public static void main(String[] args) {
      new FigurenProgramm("FigurenProgramm");
    }

}
 
S

SlaterB

Gast
was genau ist das Problem anhand des gepostenen Beispielprogramms?
anfangs ist die Farben-Box deaktiviert, man kann sie nur aktivieren, wenn man Kreis auswählt,
bei dieser Aktivierung ist natürlich immer noch das erste Element 'Auswahl' selektiert, kein anderes,
willst du einen anderen Startwert?

jedenfalls trifft dann zunächst keiner der if-Fälle in setFarben() zu, kein Wunder,

da die Box nun aktiviert ist, kann man aber eine Farbe auswählen, daraufhin findet keine besondere Ereignisbehandlung statt, da nicht programmiert,
wenn man aber den Kreis wegwählt und wieder auswählt,
dann gelangt man erneut in die setFarben()-Methode und diesmal ist ja eine der Farben ausgewählt, das klappt auch

was genau ist bei all diesen normal verständlichen logischen Vorgängen das Problem?
 

Marco13

Top Contributor
Vielleicht im Konstruktor nach dem initialisieren un dHinzufügen der "farben"-ComboBox noch
Code:
    farben.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            setFarben();
        }
    });
einfügen!?
 

Muffelhs

Mitglied
dankeschön

mir war nicht klar das der actionlistener obwohl ich in dem command figuren war auch noch gleichzeitik ein anderes event steuern kann..

vielen dank

mit marcos vorschlag hat es geklappt!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
V ComboBox Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
D Swing implementierungs-technische Frage zu JList/AbstractListModel AWT, Swing, JavaFX & SWT 7
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
F Frage zu WindowListeners AWT, Swing, JavaFX & SWT 2
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
C Frage zu ActionListenern AWT, Swing, JavaFX & SWT 7
D Frage @ someActionEvent.getActionCommand() AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben