ComboBox in Action

Lapuch

Mitglied
Hallo zusammen,

ich habe eine Klasse mit Berechnung und eine mir Swing-Ausgabe erstellt. Nun will ich eine Variable für Berechnung durch den Auswahl in ComboBox bestimmen. Dafür habe ich eine ComboBox mit folgenden Auswahlmöglichkeiten; a1, a2 und a3. Je nach Auswahl soll die passende Variable in rechnung() eingesetzt werden. Kann mir jemand sagen wie soll das Befehl in ItemStateChanged aussehen, damit die Variable richtige Zuweisung bekommt?!

Java:
public class 1{

public static double[] a1 { 
         ….
Berechnung;
    return a1;
}
public static double[] a2 { 
         ….
Berechnung;
    return a2;
}
public static double[] a3 { 
         ….
Berechnung;
    return a3;
}

public static double [] rechnung (){
…
                ergebnis [i]=a+b+c;   // 
               }
    return ergebnis;
}
}

public class 2{

private void ItemStateChanged(java.awt.event.ItemEvent evt) {
  if(evt.getItem().equals("a1"))
	//ich will, dass (a aus 1.rechnung)=a1 (aus 1.a1)			;
if(evt.getItem().equals("a2"))
	//ich will, dass a (aus 1.rechnung)=a2 (aus 1.a2)			;
if(evt.getItem().equals("a3"))
	//ich will, dass a (aus 1.rechnung)=a2 (aus 1.a3)			;
}
Wenn ich z.B. die Hintergrungfarbe unter dieser Bedingung ändern will, klappt es auch.
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Aufgrund des ... Codes ist es schwierig da konkret was dazu zu sagen.
Generell: Man kann Methoden beim Aufrufen Parameter übergeben
Java:
public double berechne(double x) {...}
...
double ergebnis = berechne(2.5);

Ausserdem könnte man die möglichen Werte in einem Array halten
Code:
double a[] = {1.7, 2.1, 3.6}
Da könnte man dem selektierten Index der ComboBox (ComboBox#getSelectedIndex()) auf den korrespondierenden Index das Arrays zugreifen und weiterverwenden.

Im Übrigen ist itemStateChanged (kleines i) public und nicht private und die Methode wird bei einer Selektion einer ComboBox immer zweimal aufgerufen. Man kann der ComboBox auch einfach einen ActionListener anhängen.
 

Lapuch

Mitglied
Der Code für class 1 sieht so aus:

In der Methode Daten() wird ein Datei eingelesen und als 2d-Array ausgegeben.
Java:
 public static double[] a1() throws IOException{

         int length =87;
         double a1[]=new double[length];
          double [][] data = Daten ();
         for ( int i=0;i <length;i++){
             double c= data[2][i];
             double b = data [0][i];

          a1[i]=c/b;
         }
    return a1;
}

      public static double[] a2()throws IOException{
           int length =87;
         double a2[]=new double[length];
          double [][] data = Daten ();
          for ( int i=0;i <length;i++){
             double b = data [0][i];
             double c= data[2][i];
             double d= data[4][i];
             double e= data[5][i];
         a2[i]=b*d+c*e;
       }
        return a2;
    }


    public static double [] a3()throws IOException{
     
        int length =87;
         double a3[]=new double[length];
          double [][] data = Daten ();
          for ( int i=0;i <length;i++){

             double b = data [0][i];
             double c= data[2][i];
             double d= data[4][i];
             double e= data[5][i];

       
        a3[i]=b*c/d-e*d;
     
          }
    return a3;
    }

public static double [] rechnung()throws IOException{

    int length =87;
         double ergebnis[]=new double[length];
          double [][] data = Daten ();
           for ( int i=0;i <length;i++){

             double t = data [6][i];
             double z= data[7][i];

             double a=0; //?????
            /* if(Auswahl Combobox in class 2==a1){
             a=a1;
             if(Auswahl Combobox in class 2==a2){
             a=a2;
             if(Auswahl Combobox in class 2==a3){
             a=a3;*/

             ergebnis[i]=t+z+a;
           
    }


    return ergebnis;
}

und für class 2:

Java:
public class 2 {

  public static void main(final String args[]) {
    final String labels[] = { "a1", "a2", "a3",  };
    JFrame frame = new JFrame("Test");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JComboBox comboBox = new JComboBox(labels);
    frame.add(comboBox, BorderLayout.SOUTH);

    ActionListener actionListener = new ActionListener() {
      public void actionPerformed(ActionEvent actionEvent) {
        ItemSelectable is = (ItemSelectable)actionEvent.getSource();
        System.out.println("Auswahl:  "+ selectedString(is));
      }
    };
    comboBox.addActionListener(actionListener);
    frame.setSize(400, 200);
    frame.setVisible(true);

  }
  static private String selectedString(ItemSelectable is) {
    Object selected[] = is.getSelectedObjects();
    return ((selected.length == 0) ? "null" : (String)selected[0]);
  }
}

Nun will ich, dass beim Betätigen des ComboBox der Variable a die Verte von a1, a2 und a3 zugewiesen werden.
 
Zuletzt bearbeitet:

Lapuch

Mitglied
Ich habe versucht mein Problem Problem so zu lösen:

Ich habe drei Java Dateien gemacht mit den Namen A
Java:
Public abstract class A { 
        int length = 87; 
        double a [] = new double [length]; 
        public abstract double[] a (); 
}

class A1 extends A { 
    @Override 
    public String toString () {return "A1"; } 
        public double[] A () 
        { double [][] data=null; 
        try { 
            data = VersuchApp.Daten(); 
        } catch (IOException ex) { 
            Logger.getLogger(A1.class.getName()).log(Level.SEVERE, null, ex); 
        } 
                for (int i = 0; i < length; i++)  { 
                         double c = data [2][i]; 
                        double b = data [0][i]; 
                        a[i] = c/b;        
// System.out.println (a[i]); 
         } 
    return a; 
        } 
}
class A2 extends A{…..
…}

class A3 extends A{…
…}


Class1:
Java:
Class1{
 public double [] rechnung (A aha) 
        { 
                int length = 87; 
                double ergebnis[] = new double[length]; 
                double [][] data = daten (); 
                for (int i=0; i <length; i++) 
                { 
                        double t = data [6][i]; 
                        double z = data [7][i]; 
                        // double a = as[index].a ()[i]; 
                        double la = aha.a() [i]; 
                        ergebnis[i] = t + z + la;            
                } 
                return ergebnis; 
        } 
}
Class2
Java:
public Class2 ()  { 
                A a1 = new A1 (); 
                A a2 = new A2 (); 
                A a3 = new A3 (); 
               private A[] as = new A[] {a1, a2, a3}; 
              JComboBox comboBox = new JComboBox (as);

private void ActionPerformed(java.awt.event.ActionEvent evt) {                                              
               ItemSelectable is = (ItemSelectable) evt.getSource ();
    }                               
private String selected (ItemSelectable is)  { 
                Object selected[] = is.getSelectedObjects (); 
                A a = (A) selected [0]; 
                String s = "" + rechnung (a); 
                System.out.println ("s: " + a + "\t" + s); 
                return s; 
        }

Nach der Durchführung des Codes kommt:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code
at versuch.Class1.main(Class1.java:562)
Java Result: 1

An dieser Stelle befindet die Zeile in Methode main: Class1.A();
Und in NetBeans taucht in dem Quelltext die Meldung:

method A in class versuch.Class1 cannot be applied to given types
required: versuch.A
found: no arguments
Kann mir jemand sagen was ich schon wider falsch gemacht habe?!
 

Michael...

Top Contributor
Der Code wird ja immer undurchsichtiger ;-) Zwischendurch dachte ich mal verstanden zu haben was Du vorhast. Aber so ganz scheint Dir selbst nicht bewusst zu sein, was Du das so hinschreibst.

Hier mal ein simples Bsp, wie man per ComboBox eine Berechnung steuern kann, das man dann Schritt für Schritt ausweiten könnte:
Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class ComboCalculateDemo extends JFrame {
	private JComboBox combo;
	private double[] values;
	private JLabel resultLabel, statusLabel;
	
	public ComboCalculateDemo() {
		values = new double[] {1.5, 2.2, 3.7};
		combo = new JComboBox(new String[] {"Wert 1", "Wert 2", "Wert 3"});
		JLabel label = new JLabel("        4,5 + 1,7 +        ");
		resultLabel = new JLabel("    =  ?,?    ");
		statusLabel = new JLabel("    Select a value");
		statusLabel.setPreferredSize(new Dimension(50, 50));
		statusLabel.setBorder(BorderFactory.createEtchedBorder());
		this.getContentPane().add(label, BorderLayout.WEST);
		this.getContentPane().add(combo, BorderLayout.CENTER);
		this.getContentPane().add(resultLabel, BorderLayout.EAST);
		this.getContentPane().add(statusLabel, BorderLayout.SOUTH);
		
		combo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				double value = values[combo.getSelectedIndex()];
				resultLabel.setText("    =  " + String.format("%.1f", calculate(value)) + "    ");
				statusLabel.setText("    Selected value: " + value);
			}
		});
	}
	
	public static double calculate(double a) {
		return a + 4.5 + 1.7;
	}
	
	public static void main(String[] args) {
		JFrame frame = new ComboCalculateDemo();
		frame.setBounds(0, 0, 500, 180);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Mit der Combobox eine Action auslösen AWT, Swing, JavaFX & SWT 2
W Element aus comboBox mit observableList löschen AWT, Swing, JavaFX & SWT 3
T Combobox mit Autocomplete-Funktion AWT, Swing, JavaFX & SWT 7
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
Doppel JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
P JavaFX ClassCastException bei ComboBox.getValue AWT, Swing, JavaFX & SWT 4
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Combobox bild anklicken AWT, Swing, JavaFX & SWT 2
L JavaFX Wiederspenstige ComboBox AWT, Swing, JavaFX & SWT 0
P Combobox und Enum AWT, Swing, JavaFX & SWT 3
L ComboBox Wert automatisch auswählen AWT, Swing, JavaFX & SWT 6
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Combobox, Textfield & setOnMouseClicked AWT, Swing, JavaFX & SWT 2
it_is_all Swing Button, ComboBox,... -- Unterschied: NetBeans Design <-> Ausführung AWT, Swing, JavaFX & SWT 2
D JavaFX ComboBox String setzen AWT, Swing, JavaFX & SWT 20
offi Combobox in TableCell AWT, Swing, JavaFX & SWT 1
D Javafx Combobox Abfrage aus mysql AWT, Swing, JavaFX & SWT 8
K Event Handling ComboBox Event Handler AWT, Swing, JavaFX & SWT 7
MrSnake ComboBox-Einträge werden unsichtbar AWT, Swing, JavaFX & SWT 0
L ComboBox: slider positionieren AWT, Swing, JavaFX & SWT 0
M JavaFX ComboBox: Update zur Laufzeit AWT, Swing, JavaFX & SWT 16
M JavaFX Combobox bindBidirectional AWT, Swing, JavaFX & SWT 4
D [Anfänger]ComboBox erstellt Einträge in einer anderen ComboBox AWT, Swing, JavaFX & SWT 3
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
H Combobox aktualisieren AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
M JavaFX ComboBox AWT, Swing, JavaFX & SWT 5
T Problem: ComboBox und addItem AWT, Swing, JavaFX & SWT 5
J ComboBox als Filter benutzen AWT, Swing, JavaFX & SWT 1
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
Developer_X Java JTable - Combobox + Checkbox - Cellrenderer + Editor AWT, Swing, JavaFX & SWT 3
G Dynamische ComboBox AWT, Swing, JavaFX & SWT 3
U Combobox mit individuellen Texten AWT, Swing, JavaFX & SWT 5
M JavaFX Combobox - Item Auswahl mit Tasten AWT, Swing, JavaFX & SWT 8
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
C Beschriftungen von Tabellenspalten mit Combobox aussuchen AWT, Swing, JavaFX & SWT 2
G JavaFX ComboBox .getItems().add() Problem AWT, Swing, JavaFX & SWT 9
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
B JAVAFX icon in ComboBox einfügen AWT, Swing, JavaFX & SWT 5
W Swing Combobox Abhängigkeit AWT, Swing, JavaFX & SWT 1
S ComboBox-Werte aus einem Array an Textfields übergeben AWT, Swing, JavaFX & SWT 3
A Swing GUI mit ComboBox, wenn Item ausgewählt wurde neues GUI AWT, Swing, JavaFX & SWT 7
S Combobox aktualisieren AWT, Swing, JavaFX & SWT 3
B Erstellen eigener Combobox ("CellFactory") AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
A combobox automatisch in ein textfeld wechseln AWT, Swing, JavaFX & SWT 3
J Swing Drive-ComboBox AWT, Swing, JavaFX & SWT 7
C TextFeld in Verbindung zur ComboBox automatisch aktualisieren AWT, Swing, JavaFX & SWT 7
L Swing Model für ComboBox AWT, Swing, JavaFX & SWT 14
H Combobox in einer einzelnen Zelle der Jtable AWT, Swing, JavaFX & SWT 2
T Java Combobox Problem AWT, Swing, JavaFX & SWT 3
C SWT Combobox mit Textdatei füllen AWT, Swing, JavaFX & SWT 2
M comboBox Listener? AWT, Swing, JavaFX & SWT 2
R Datenbanktabellen in Combobox AWT, Swing, JavaFX & SWT 3
C Combobox bei Tabellenänderung mit aktualisieren AWT, Swing, JavaFX & SWT 11
1 CellEditor mit ComboBox richtig beenden AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
E Swing CellEditor mit Combobox durch Tastatureingabe editieren?! AWT, Swing, JavaFX & SWT 3
GianaSisters Swing ComboBox im jTable (in bestimmter Zelle nicht über die ganze Spalte) AWT, Swing, JavaFX & SWT 4
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
N Filternde Combobox in JTable verliert Fokus nach erster Eingabe AWT, Swing, JavaFX & SWT 2
F Wert zu Eintrag in ComboBox speichern?! AWT, Swing, JavaFX & SWT 7
P Swing ComboBox(en) in JTable auslesen und ausgeben AWT, Swing, JavaFX & SWT 11
M Index von Combobox AWT, Swing, JavaFX & SWT 20
D ComboBox & CellListRenderer AWT, Swing, JavaFX & SWT 6
D ComboBox-Model mit Observer AWT, Swing, JavaFX & SWT 3
B Taschenrechner mit ComboBox AWT, Swing, JavaFX & SWT 7
T ComboBox auslesen AWT, Swing, JavaFX & SWT 11
P Combobox liesst falschen Wert AWT, Swing, JavaFX & SWT 10
C Combobox im JFrame aus Datenbank befüllen AWT, Swing, JavaFX & SWT 6
M Combobox soll Farbe einer Komponente setzen AWT, Swing, JavaFX & SWT 2
M Swing ComboBox ein SelectedItem übergeben/anzeigen AWT, Swing, JavaFX & SWT 7
J Werte aus Combobox speichern AWT, Swing, JavaFX & SWT 3
J Combobox als Filterkriterium (Gruppierung) in JTable AWT, Swing, JavaFX & SWT 7
R Swing ComboBox und doppelter Event!? AWT, Swing, JavaFX & SWT 10
M SWT Wie Textfeld hinzufügen, nach Auswahl von einem bestimmten Combobox-item? AWT, Swing, JavaFX & SWT 3
M SWT ComboBox mit DB-Inhalten Designfrage AWT, Swing, JavaFX & SWT 5
W MouseListener im editable ComboBox AWT, Swing, JavaFX & SWT 14
W Combobox mit eingabefeld AWT, Swing, JavaFX & SWT 7
T Editable ComboBox / kein Weiterspringen AWT, Swing, JavaFX & SWT 12
M Combobox in JTable AWT, Swing, JavaFX & SWT 4
S Swing ComboBox aus Array befüllen AWT, Swing, JavaFX & SWT 2
K Per ComboBox Dateien einlesen AWT, Swing, JavaFX & SWT 23
0 Hintergundfarbe von editierbarer ComboBox ändern AWT, Swing, JavaFX & SWT 2
M Frage zu ComboBox AWT, Swing, JavaFX & SWT 7
O Bitte um Hilfe bei ComboBox in TableHeader AWT, Swing, JavaFX & SWT 9
A NetBeans und ComboBox AWT, Swing, JavaFX & SWT 2
SuperSeppel13 Combobox zur Farbwahl kollidiert mit NimbusLookAndFeel AWT, Swing, JavaFX & SWT 7
D ComboBox(Model) mit dummyItem AWT, Swing, JavaFX & SWT 10
D Inhalt von Textfield nach ComboBox AWT, Swing, JavaFX & SWT 2
GilbertGrape nochmal editierbare Combobox AWT, Swing, JavaFX & SWT 3
GilbertGrape JTable mit Combobox-Editierung schon nach einem Klick AWT, Swing, JavaFX & SWT 7
E Swing Button ActionListener Infos aus Textfield und ComboBox AWT, Swing, JavaFX & SWT 3
G ComboBox wird nicht angezeigt beim anhängen an eine Gruppe AWT, Swing, JavaFX & SWT 2
G Combobox Event AWT, Swing, JavaFX & SWT 4
G ComboBox aktualisieren AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben