Swing Rückmeldung für JButton

steffi89

Mitglied
Hallo meine lieben

Ich hoffe Ihr könnt mir helfen.

Habe ein Panel gezeichnet mit 8 Buttons. Über das Netzwerk frage ich nun ein Gerät über seinen aktuellen Zustand ab. Je nachdem was das Gerät antwortet soll sich ein spezieller Button ändern (z. B. die Farbe). Die Abfrage sollte alle 5 Sekunden durchgeführt werden, deshalb dache ich an ca. soetwas:

Java:
public class PanelSwitcher{
   
    Dimension dPanel = new Dimension(360,120);
    Dimension dButton = new Dimension(80,35);
    Dimension dLabel = new Dimension(320,35);
    
   
    //Haptpanel
    JPanel Panel = new JPanel();

    //Buttons
    JButton bInput1 = new JButton("1");
    JButton bInput2 = new JButton("2");
    JButton bInput3 = new JButton("3");
    JButton bInput4 = new JButton("4");
    JButton bInput5 = new JButton("5");
    JButton bInput6 = new JButton("6");
    JButton bInput7 = new JButton("7");
    JButton bInput8 = new JButton("8");
    
    public JPanel init(){
                
            Panel.setPreferredSize(new Dimension(350,400));
            Panel.setBorder(new TitledBorder("Titel"));

            JLabel lTopic = new JLabel();
            JPanel InputPanel = new JPanel();
            JPanel SetPanel = new JPanel();
            JPanel InfoPanel = new JPanel();
            //Panels
            InputPanel.setBorder(new TitledBorder("Input"));
            SetPanel.setBorder(new TitledBorder("Settings"));
            InfoPanel.setBorder(new TitledBorder("Informationen"));
            
            
            
            JButton bAktuell = new JButton("Aktuallisieren");
            bInput1.setPreferredSize(dButton);
            bInput2.setPreferredSize(dButton);
            bInput3.setPreferredSize(dButton);
            bInput4.setPreferredSize(dButton); 
            bInput5.setPreferredSize(dButton);
            bInput6.setPreferredSize(dButton);
            bInput7.setPreferredSize(dButton);
            bInput8.setPreferredSize(dButton); 
            
            bAktuell.setPreferredSize(new Dimension(150,35));
            
            // RM aktuallisieren: das erste mal
            [EDIT]callButtonRm();[/EDIT]
            
            // Panelbeschreiben
            InputPanel.add(bInput1);
            InputPanel.add(bInput2);
            InputPanel.add(bInput3);
            InputPanel.add(bInput4);
            InputPanel.add(bInput5);
            InputPanel.add(bInput6);
            InputPanel.add(bInput7);
            InputPanel.add(bInput8);
            
            InputPanel.setPreferredSize(dPanel);
            SetPanel.setPreferredSize(dPanel);
            InfoPanel.setPreferredSize(dPanel);

            Panel.add(lTopic);
            Panel.add(InputPanel);
            Panel.add(SetPanel);
            Panel.add(InfoPanel);
            Panel.add(bAktuell);
            
            
            
            return Panel;		
	}
    
    
        public void callButtonRm(){
        
            // Rückmeldung Button Input
            bInput1.setForeground(Color.black);
            bInput2.setForeground(Color.black);
            bInput3.setForeground(Color.black);
            bInput4.setForeground(Color.black);
            bInput5.setForeground(Color.black);
            bInput6.setForeground(Color.black);
            bInput7.setForeground(Color.black);
            bInput8.setForeground(Color.black);
            
            switch(sw.getExtronSwitchInput()){
                case 0:
                    break;
                case 1:
                    bInput1.setForeground(Color.blue);
                    break;
                case 2:
                    bInput2.setForeground(Color.blue);
                    break;
                case 3:
                    bInput3.setForeground(Color.blue);
                    break;
                case 4:
                    bInput4.setForeground(Color.blue);
                    break;
                case 5:
                    bInput5.setForeground(Color.blue);
                    break;
                case 6:
                    bInput6.setForeground(Color.blue);
                    break;
                case 7:
                    bInput7.setForeground(Color.blue);
                    break;
                case 8:
                    bInput8.setForeground(Color.blue);
                    break;
                default:
            }
            
            
        }
}

Die Zeitabfrage passiert dann über das Hauptprogramm.

Vielleicht hat ja jemand eine Idee, wie ich das realisieren kann.

lg

Steffi
 

anti-held

Bekanntes Mitglied
Natürlich musst du dein Panel noch in ein JWindow hinzufügen.
Auch würde ich das die init-Methode im Konstruktor aufrufen und die Klasse selbst das JPanel sein lassen. (also von JPanel erben)

Aber dann braucht du halt nur noch einen Thread, der nebenher läuft und alle 5sec die Abfrage an das Netzwerkgerät macht und dann deine Methode [c]callButtonRm[/c] aufruft.

z.B.
Java:
public abstract class Ticker extends Thread {

	private final int ms;
	
	public Ticker(int seconds){
		this.ms = seconds * 1000;
	}
	
	@Override
	public void run() {
		try{
			while(true){
				doOnTick();
				sleep(ms);
			}
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
	
	abstract public void doOnTick();
	
}

Aufgerufen wird das ganze dann ca so:
Java:
	public static void main(String[] args) {
		// erstelle Panel
		final PanelSwitcher switcher = new PanelSwitcher();

		new Ticker(5){
			@Override
			public void doOnTick() {
				// lade gerätestatus
				sw.getDeviceStatus();
				// aktualisiere Buttons
				switcher.callButtonRm();
			}
		}.start();
	}
 

steffi89

Mitglied
Hallo mein Held

Danke für Deine Antwort. Sorry. Habe mich da ein wenig ungeschickt ausgedrückt. Mein Problem ist nicht die Abfrage alle x Sekunden, sondern dass sich die Buttons nicht ändern. wenn ich den Code der callButtonRm() in den Haupftteil kopiere, werden die Button richtig angezeigt. Wenn ich das ganze über den callButtonRm() mache nicht mehr.

Das Panel ist nur ein kleiner Teil einer größeren Oberfläche.

Vielen Dank für Deine Hilfe.


lg

Steffi
 

anti-held

Bekanntes Mitglied
Möglich könnte sein, dass du die Methode auf ein falsches Objekt vom Typ PanelSwitcher aufrufst.
Aber ohne den Code, wo das Objekt erstellt wird und wo die Methode aufgerufen wird, ist das schwer zu sagen.
Zeig doch mal die 2 verschiedenen Varianten, wie du deine Methode aufrufen würdest.
 

turtle

Top Contributor
Der Zustand von Swing Controls sollte nur aus dem EDT passieren.

In deinem Code geschieht das aber auch aus einem anderen Thread. Das solltest du ändern.

Ich habe zu SwingWorker, mit dem Aktionen in einem separaten Thread laufen und dennoch Swing Updates gemacht werden können, in einem Blog-Eintrag beschrieben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiHimbert Rückmeldung an den aufrufenden JAVAFX-Dialog AWT, Swing, JavaFX & SWT 1
H Swing Keine Rückmeldung (freeze) bei setVisible(false) oder dispose() AWT, Swing, JavaFX & SWT 4
Juelin setzen background color für selected Row im Tableview AWT, Swing, JavaFX & SWT 21
Juelin Für Java-Spezialisten AWT, Swing, JavaFX & SWT 4
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
I Libraries für AWT für andere Grafik-Frameworks tauglich machen AWT, Swing, JavaFX & SWT 6
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
D JavaFX Schadensberechnung für Kartenspiel AWT, Swing, JavaFX & SWT 1
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
L actionListener für Button AWT, Swing, JavaFX & SWT 97
izoards Textfeld für Zeit AWT, Swing, JavaFX & SWT 4
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
T Getter und Setter für eine Stage AWT, Swing, JavaFX & SWT 6
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
T Button für GUI programmieren AWT, Swing, JavaFX & SWT 1
Z Switch Case für Buttons AWT, Swing, JavaFX & SWT 8
M Hough-Transformation für Kreise und andere Formen AWT, Swing, JavaFX & SWT 3
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
MiMa Package Struktur für GUI Programmierung AWT, Swing, JavaFX & SWT 26
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B eclipse für JavaFx setuppen AWT, Swing, JavaFX & SWT 4
K Swing Struktur für TreeTable rekursiv aufbauen AWT, Swing, JavaFX & SWT 17
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
H Ein Patten für das Gluon Mobile Framework AWT, Swing, JavaFX & SWT 7
J Gibt es einen Grund für 16x16 anstatt z.B. 15x15 Tiles ? AWT, Swing, JavaFX & SWT 10
F JFormattedTextField für kg und Währung AWT, Swing, JavaFX & SWT 6
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
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
Soloeco JavaFX Dreifachklick für MenuButton erforderlich AWT, Swing, JavaFX & SWT 2
L JavaFX Lösungsvorschläge für dieses coole Control AWT, Swing, JavaFX & SWT 8
looparda Suche Lib für Visualisierung von Graphen AWT, Swing, JavaFX & SWT 12
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
S Swing Finde Grund für NullPointerExeption nicht. AWT, Swing, JavaFX & SWT 2
W JavaFX (j)Unittests für GUI AWT, Swing, JavaFX & SWT 0
B JavaFX JavaFX TableView PropertyValueFactory für Werte aus HashMap AWT, Swing, JavaFX & SWT 2
SchmidiMC Swing Vorschläge für ein Design AWT, Swing, JavaFX & SWT 5
Z JavaFX Pane für wechselnde Sub-Panes mit Auto-Resize AWT, Swing, JavaFX & SWT 2
S 2D-Grafik affine Transformation für Text-Shape AWT, Swing, JavaFX & SWT 0
G Swing Variable Elemente für GroupLayout AWT, Swing, JavaFX & SWT 18
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
P Swing Empfehlungen für einfaches Computerspiel AWT, Swing, JavaFX & SWT 4
L DragDropped für jede Node AWT, Swing, JavaFX & SWT 0
temi JavaFX Lösungsansatz für Umsetzung gesucht AWT, Swing, JavaFX & SWT 4
J Swing JavaProgramm für Verschlüssen für eine Datei AWT, Swing, JavaFX & SWT 19
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
MiMa Programmeinstellungen für Anwendung?? AWT, Swing, JavaFX & SWT 54
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
L JavaFX Renderer für JavaFX AWT, Swing, JavaFX & SWT 2
MiMa GUI Controller für Border Pane als MVC Modell AWT, Swing, JavaFX & SWT 1
L Font für Dashboard AWT, Swing, JavaFX & SWT 3
F Swing JColorChooser für die JToggleButtons AWT, Swing, JavaFX & SWT 5
S JavaFX Optimierung für verschiedene Auflösungen AWT, Swing, JavaFX & SWT 12
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
T Swing Drag and Drop für JComponents AWT, Swing, JavaFX & SWT 1
Kloso Swing Pseudocode für Strafurzeichnung AWT, Swing, JavaFX & SWT 4
F Konstruktor für "Vier Gewinnt" AWT, Swing, JavaFX & SWT 10
L JavaFX PdfViewer für JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
R Swing Welche LayoutManager sind die richtigen für mich? AWT, Swing, JavaFX & SWT 11
L Event Handling Gui für Taschenrechner AWT, Swing, JavaFX & SWT 27
C Slider für Zeitauswahl AWT, Swing, JavaFX & SWT 3
M Limit für JFrame-Vergrößerung AWT, Swing, JavaFX & SWT 8
GreenTeaYT Button funktioniert nicht für Ein-und Auszahlungen? AWT, Swing, JavaFX & SWT 8
K Liniendicke für Line Chart dynamisch ändern AWT, Swing, JavaFX & SWT 0
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
OnDemand Gui Themes für FX AWT, Swing, JavaFX & SWT 4
G DefaultListModel für JList AWT, Swing, JavaFX & SWT 2
P JavaFX Kalender mit Kacheln für Ereignisse AWT, Swing, JavaFX & SWT 4
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
J Swing Neuen Command für "show"? AWT, Swing, JavaFX & SWT 2
sandaime Swing Thread für CMD auslesen AWT, Swing, JavaFX & SWT 16
H Swing JFileChooser für nicht existierendes Unterverzeichnis AWT, Swing, JavaFX & SWT 3
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
D GUI-Bau für ein Auswertungs-Tool AWT, Swing, JavaFX & SWT 11
L Swing CellRenderer für einzelne Zellen? AWT, Swing, JavaFX & SWT 5
RalleYTN Swing Menü für Texteditor (Rechtsklick) AWT, Swing, JavaFX & SWT 4
H Applet Flappy Bird für Noobs AWT, Swing, JavaFX & SWT 4
X JavaFX Tooltips für XYChart-Knoten werden nicht angezeigt! AWT, Swing, JavaFX & SWT 3
Thallius Swing Aufgabe für einen der gerne Tüftelt. AWT, Swing, JavaFX & SWT 4
A hilfe für flowlayout AWT, Swing, JavaFX & SWT 6
B EventHandler für durch Tastenkombination erzeugte Zeichen AWT, Swing, JavaFX & SWT 3
T Hintergrund für GUI AWT, Swing, JavaFX & SWT 1
L JavaFX TableView mit Attributs der Modellreferenzerierung für die Spalte AWT, Swing, JavaFX & SWT 3
C JavaFX Character Comparator für TableColumn AWT, Swing, JavaFX & SWT 0
KrokoDiehl JavaFX Gleiche Controller-Instanz für inludiertes FXML AWT, Swing, JavaFX & SWT 1
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
S Pfad für Speichervorgang auswählen AWT, Swing, JavaFX & SWT 11
M If für viele TextFields AWT, Swing, JavaFX & SWT 7
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
R JMenuItems für Touchscreen auseinanderziehen AWT, Swing, JavaFX & SWT 3
L LookAndFeel Eigenes Design für die Applikation AWT, Swing, JavaFX & SWT 4
G Grafikformat für AWT-Applet? AWT, Swing, JavaFX & SWT 0

Ähnliche Java Themen

Neue Themen


Oben