GUI Checkboxen in allen Klassen abfragen?

D

Dany78

Gast
Guten Abend all

ich habe eine Klasse welches mir mein Gui konstruiert etc. Nun möchte ich den Status der Checkboxen in allen anderen Klassen abfragen. Es muss doch hierfür eine bessere Möglichkeit geben als alle Werte "klassisch" mitzuübergeben? Das kann ja je nach Tiefe in einer Orgie ausarten.

[Java]
public class zeigetwas {

public static void zeig(){

if (button_button1.isSelected()) //Falsch
{

System.out.println("Hello World");
}
}
}
[/Java]


Der GUI Builder

[Java]

public class oberflaeche extends JPanel implements ActionListener {


static private String results = null;
final static JTextArea text = new JTextArea(25,45);

JFileChooser fc;
static String dir_export_name;
static String file_name;
static private final String newline = "\n";


public oberflaeche() {

fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
}


public static void main(String[] args) {
oberflaeche gui = new oberflaeche();
gui.createAndShowGUI();
}

public void createAndShowGUI() {


JFrame jf=new JFrame("Oberfläche");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(700,500);
jf.setLayout(new GridBagLayout());
jf.setVisible(true);

GridBagConstraints c = new GridBagConstraints();


//leftup
JPanel leftup=new JPanel();
leftup.setLayout(new GridLayout(5,1));

c.gridx = 0; //x grid position
c.gridy = 0; //y grid position
c.insets = new Insets( 5, 5, 5, 5 );
c.weightx = 1.0;
leftup.add(Box.createRigidArea(new Dimension(0, 10)));



// Checkboxen für Leftup
JLabel label = new JLabel("test");
leftup.add(label);

JCheckBox button_button1=new JCheckBox("Button01");
button_button1.setSelected(true);

JCheckBox button_button2=new JCheckBox("Button02");
button_button2.setSelected(true);

JCheckBox button_button3=new JCheckBox("Button03");
button_button3.setSelected(true);


leftup.add(button_button1);
leftup.add(button_button2);
leftup.add(button_button3);


button_button1.addActionListener(new button_button1_Listener());
button_button2.addActionListener(new button_button2_Listener());


jf.add(leftup, c);


//leftdown

JPanel leftdown=new JPanel();
leftdown.setLayout(new GridLayout(5,1));
c.gridx = 0; //x grid position
c.gridy = 1; //y grid position
//c.anchor = GridBagConstraints.CENTER;
c.insets = new Insets( 5, 5, 5, 5 );
c.weightx = 1.0;



JButton button_convert=new JButton();
button_convert.setText("Starten");
leftdown.add(button_convert);

jf.add(leftdown, c);



//TextArea
JPanel textpanel= new JPanel();

text.setLineWrap(true);
textpanel.add(new JScrollPane(text));
textpanel.add(text);
c.gridx=1;
c.gridy=0;
c.gridheight=2;
c.gridwidth=2;
c.fill=GridBagConstraints.BOTH;
jf.add(textpanel, c);



// Menübar
JMenuBar menüleiste = new JMenuBar();
JMenu menüDatei = new JMenu("Datei");
JMenuItem menüPunktNeu = new JMenuItem("Neu");
JMenuItem menüPunktSpeichern = new JMenuItem("Speichern");
JMenuItem menüPunktEnde = new JMenuItem("Ende");
//menüPunktEnde.addActionListener(new EndeButtonListener());

JMenu menüAbout = new JMenu("About");
JMenuItem menüPunktAbout = new JMenuItem("About");


menüDatei.add(menüPunktNeu);
menüDatei.add(menüPunktSpeichern);
menüDatei.add(menüPunktEnde);
menüAbout.add(menüPunktAbout);
menüleiste.add(menüDatei);
menüleiste.add(menüAbout);
jf.setJMenuBar(menüleiste);

//Filechooser
jf.add(new oberflaeche());


button_convert.addActionListener(new Button_Converter_Listener());

}

// Listener


public class Button_Converter_Listener implements ActionListener {
public void actionPerformed(ActionEvent ev) {
zeigetwas ze=new zeigetwas();
ze.zeig();
}
}



public class button_button2_Listener implements ActionListener {
public void actionPerformed(ActionEvent e)
{

}
}

public class button_button1_Listener implements ActionListener {
public void actionPerformed(ActionEvent ev1)
{
Object src = ev1.getSource();


}
}


public static void appendText(final String _textToAppend)
{
text.append(_textToAppend);

}


@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub

}

}







[/Java]
 

DStrohma

Bekanntes Mitglied
Du könntest für die Checkboxen getter und setter erstellen und dann dadurch auf die zugreifen und vielleicht wäre es auch keine schlechte idee wenn die static wären.

Übrigens, ich persönlich würde es nicht so machen dass du für jede Checkbox einen eigenen actionlistener hast. du hast doch die klasse sowieso schon mit "implements ActionListener" versehen und hast also eine "actionPerformed" methode direkt in der Klasse. Die reicht vollkommen aus um alle Checkboxen zu steuern:

eineCheckbox.addActionListener(this); // ActionListener hinzufügen
eineCheckbox.addActionCommand("soundEnabledCheckbox"); // Einen ActionCommand festlegen um die Checkbox später identifizieren zu können.

Und dann in der actionPerformed methode eben:

if (arg0.getActionCommand.equals("soundEnabledCheckbox"); {
// irgendwas
}
 
Zuletzt bearbeitet:

w0ddes

Bekanntes Mitglied
Um jetzt auf dein problem zu kommen:

Du könntest die CheckBoxen als
Code:
public static
deklarieren. Dann kannst du in deiner zweiten Klasse durch aufrufen von
Code:
oberflaeche.button_button1.isSelected()
abfragen ob er ausgewählt ist oder nicht.

Deine Klasse "Oberfläche" sollte also so aussehen:

Java:
public class Oberflaeche extends JPanel implements ActionListener {
 
 
    static private String results = null;
    final static JTextArea text = new JTextArea(25,45);

    public static JCheckBox button_button1;  /*Hier ist der wichtige Teil*/
    public static JCheckBox button_button2;
    public static JCheckBox button_button3;
    
    JFileChooser fc;
    static String dir_export_name;
    static String file_name;
    static private final String newline = "\n"; 
    
    
    public Oberflaeche() {
        
          fc = new JFileChooser();
          fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    }
    
    
    public static void main(String[] args) {
        oberflaeche gui = new oberflaeche();
        gui.createAndShowGUI();
    }
    
    public void createAndShowGUI() {
        
    //...
        
        /*Das muss aber dann auch angepasst werden*/

        // Checkboxen für Leftup
        JLabel label = new JLabel("test");
        leftup.add(label);
        
        button_button1=new JCheckBox("Button01");
        button_button1.setSelected(true);
        
        button_button2=new JCheckBox("Button02");
        button_button2.setSelected(true);
        
        button_button3=new JCheckBox("Button03");
        button_button3.setSelected(true);
 
  //.............

}

P.S: Und schau mal nach den Naming-conventions:
-bei Klassen sollte man immer den ersten Buchstaben groß schreiben
-Zusammengesetzte Wörter schreibt man z.B. so: Als Klasse:
Code:
ZeigeEtwas
, als Methode
Code:
zeigeEtwas

Das erleichtert dir und aussenstehenden den Überblick zu erhalten bzw zu gewinnen, okay? :D
 
Zuletzt bearbeitet:
D

Dany78

Gast
Danke euch für die Hilfe.

Wollte jetzt mal die Actionlistener vereinfachen und das genannte Beispiel ausprobiert:

[Java]

button_button1.addActionListener(this);
button_button1.addActionCommand("EnabledCheckbox1");

button_button2.addActionListener(this);
button_button2.addActionCommand("EnabledCheckbox2");

.........

public void actionPerformed(ActionEvent arg0) {

if (arg0.getActionCommand.equals("EnabledCheckbox1"); {
// irgendwas
}

}


[/Java]

Hierbei bekomme ich für addActionCommand die Meldung: The method addActionCommand(String) is undefined for the type JCheckBox.
 
G

Gast2

Gast
Hierbei bekomme ich für addActionCommand die Meldung: The method addActionCommand(String) is undefined for the type JCheckBox.

Die Methode heißt ja auch [c]setActionCommand(String s)[/c]

Meiner Meinung nach solltest du auf public static CheckBoxen oder static Getter verzichten. Das ist kein guter Stil. Da bleiben dir eigentlich nur drei Möglichkeiten:
1) Singelton-Pattern für die Klasse, so bekommst du in jeder anderen Klasse deiner App die Referenz und kannst z.B. Config.getInstance().getCheckBoxState() aufrufen
2) Jeder Klasse die Referenz mitgeben
3) Eine Object Registry aus der du dir die Referenzen ziehst - was aber im endeffekt wieder auf ein Singleton hinausläuft

Oder halt mit Dependency Injection spielen...
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Checkboxen abfragen Java Basics - Anfänger-Themen 10
O Checkboxen de-/select all Java Basics - Anfänger-Themen 4
L sichtbarkeit von checkboxen Java Basics - Anfänger-Themen 2
J checkBoxen Panels Java Basics - Anfänger-Themen 12
J Checkboxen umbenennen Java Basics - Anfänger-Themen 3
A Checkboxen in Schleife erstellt -> wie 'ansprechen' ? Java Basics - Anfänger-Themen 3
philipp mehrere checkboxen machen Java Basics - Anfänger-Themen 4
M Checkboxen? Java Basics - Anfänger-Themen 4
W Javadoc HTML erzeugen mit allen dependency Java Basics - Anfänger-Themen 11
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
L Classpath Jar exportieren mit allen Libaries Java Basics - Anfänger-Themen 1
C Array in allen Kombinationen ausfüllen Java Basics - Anfänger-Themen 17
L Vererbung auf Methode einer abgeleiteten Klassezu greifen, die nicht in allen abgeleiteten existiert Java Basics - Anfänger-Themen 3
B ArrayList.clear - Daten in allen Referenzen weg Java Basics - Anfänger-Themen 2
Y Schriftproblem in allen Java Anwendungen Java Basics - Anfänger-Themen 2
alderwaran überladene methoden mit allen möglichen typen aufrufen Java Basics - Anfänger-Themen 3
F 4 STrings in allen Kombinationen miteinander kombinieren Java Basics - Anfänger-Themen 2
A File mit allen Laufwerken? Java Basics - Anfänger-Themen 4
E Vector Fehler bei allen Methoden von Vector Java Basics - Anfänger-Themen 2
M Buttons auf allen Masken Java Basics - Anfänger-Themen 4
P Instanz mit allen Attributen ausgeben Java Basics - Anfänger-Themen 3
F Dialog mit allen verfügbaren Druckern Java Basics - Anfänger-Themen 2
T JTextArea mit allen Formatierungen in eine Datei schreiben Java Basics - Anfänger-Themen 15
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
A Generischen Klassen Java Basics - Anfänger-Themen 8
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
J 2 klassen benutzen Java Basics - Anfänger-Themen 5
A Klassen und methoden Java Basics - Anfänger-Themen 15
A Bankweverwaltung mit Klassen und Methoden Java Basics - Anfänger-Themen 14
J Klassen Problem Java Basics - Anfänger-Themen 8
I Java Klassen "Graphics" und "MouseEvent" kombinieren Java Basics - Anfänger-Themen 7
I Klassen als Datentyp nutzen? Java Basics - Anfänger-Themen 11
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
C Klassen objektorientiert aufteilen Java Basics - Anfänger-Themen 6
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
F Klassen und Pakete Projektübergreifend (Eclipse) Java Basics - Anfänger-Themen 6
V_Fynn03 Klassen Überweisungen tätigen und einzahlen mit 2 Klassen Java Basics - Anfänger-Themen 1
W Abarbeitungsreihenfolge Anonyme Klassen Java Basics - Anfänger-Themen 2
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
W Frage zu anonymen Klassen Java Basics - Anfänger-Themen 4
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
E Klassen implementieren Java Basics - Anfänger-Themen 94
T Interfaces in erbenden Klassen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben