Java Überwachungsprogramm für Motoren

Nanotic

Lieutenant
Dabei seit
Sep. 2010
Beiträge
556
Hallo liebe Community,

ich möchte ein Programm zum Überwachen von 4 Motoren schreiben.

Habe bereits angefangen, jedoch fehlt mir nur eine einzige Sache:
Das darstellen eines roten und gelben Feldes, wenn ein bestimmter Wert erreicht ist.

Habe über die disjunktive Normalform die vereinfachte Form errechnet und benutze diese um 2 Radiobutton gelb bzw. rot hinterlegen zu lassen.

Code:
public void actionPerformed(ActionEvent ae){
    System.out.println("Checkbox 1: "+jCheckBox1.isSelected());
    System.out.println("Checkbox 2: "+jCheckBox2.isSelected());
    System.out.println("Checkbox 3: "+jCheckBox3.isSelected());
    System.out.println("Checkbox 4: "+jCheckBox4.isSelected());
    
    if(ae.getSource()==((jCheckBox3.isSelected()== true &&jCheckBox4.isSelected()==true)||((jCheckBox1.isSelected()==true) &&(jCheckBox4.isSelected()==true))))
    {
      this.jRadioButton1.setBackground(Color.YELLOW);
    }
    if(ae.getSource()==(((jCheckBox1.isSelected()==true) && (jCheckBox2.isSelected()==true) && (jCheckBox4.isSelected()==true))||((jCheckBox1.isSelected()==true) &&( jCheckBox2.isSelected()==true) &&(jCheckBox3.isSelected()==true))||((jCheckBox2.isSelected()==true) &&(jCheckBox3.isSelected()==true) &&(jCheckBox4.isSelected()==true))||((jCheckBox1.isSelected()==true) &&(jCheckBox3.isSelected()==true) &&(jCheckBox4.isSelected()==true))))
    {
      this.jRadioButton1.setBackground(Color.RED);
    } 
    
  }
  // Ende Methoden
Wenn einer der Fälle eintritt, also ich z.B.: M4 und M3 in der jeweiligen Checkbox anklicke, passiert gar nichts. Wieso nicht?!

Wo liegt mein Fehler?

Danke im Voraus!
 

Nanotic

Lieutenant
Ersteller dieses Themas
Dabei seit
Sep. 2010
Beiträge
556
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

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

public class Motorlastüberwachung extends JFrame implements ActionListener {
  // Anfang Attribute
  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JLabel jLabel4 = new JLabel();
  private JCheckBox jCheckBox1 = new JCheckBox();
  private JCheckBox jCheckBox2 = new JCheckBox();
  private JCheckBox jCheckBox3 = new JCheckBox();
  private JCheckBox jCheckBox4 = new JCheckBox();
  private JLabel jLabel5 = new JLabel();
  private JLabel jLabel6 = new JLabel();
  private JRadioButton jRadioButton1 = new JRadioButton();
  private JRadioButton jRadioButton2 = new JRadioButton();
  // Ende Attribute
  
  public Motorlastüberwachung(String title) { 
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    int frameWidth = 450; 
    int frameHeight = 450;
    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);
    setResizable(false);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten
    
    jLabel1.setBounds(24, 8, 130, 40);
    jLabel1.setText("M1");
    jLabel1.setHorizontalTextPosition(SwingConstants.CENTER);
    jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel1.setFont(new Font("Constantia", Font.BOLD, 22));
    this.add(jLabel1);
    
    jLabel2.setBounds(24, 96, 130, 49);
    jLabel2.setText("M2");
    jLabel2.setFont(new Font("Constantia", Font.BOLD, 22));
    jLabel2.setHorizontalTextPosition(SwingConstants.CENTER);
    jLabel2.setHorizontalAlignment(SwingConstants.CENTER);
    this.add(jLabel2);
    
    jLabel3.setBounds(16, 192, 130, 49);
    jLabel3.setText("M3");
    jLabel3.setFont(new Font("Constantia", Font.BOLD, 22));
    jLabel3.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel3.setHorizontalTextPosition(SwingConstants.CENTER);
    this.add(jLabel3);
    
    jLabel4.setBounds(16, 304, 130, 41);
    jLabel4.setText("M4");
    jLabel4.setFont(new Font("Constantia", Font.BOLD, 22));
    jLabel4.setHorizontalAlignment(SwingConstants.CENTER);
    jLabel4.setHorizontalTextPosition(SwingConstants.CENTER);
    this.add(jLabel4);
    
    
    jCheckBox1.setBounds(24, 56, 130, 25);
    jCheckBox1.setText("");
    jCheckBox1.addActionListener(this);
    this.add(jCheckBox1);
    
    jCheckBox2.setBounds(24, 152, 130, 33);
    jCheckBox2.setText("");
    jCheckBox2.addActionListener(this);
    this.add(jCheckBox2);
    
    jCheckBox3.setBounds(16, 250, 130, 40);
    jCheckBox3.setText("");
    jCheckBox3.addActionListener(this);
    this.add(jCheckBox3);
    
    jCheckBox4.setBounds(16, 360, 130, 41);
    jCheckBox4.setText("");
    jCheckBox4.addActionListener(this);
    this.add(jCheckBox4);
    
    jLabel5.setBounds(232, 64, 195, 41);
    jLabel5.setText("Gelbe Kontrollleuchte");
    this.add(jLabel5);
    
    jLabel6.setBounds(224, 208, 211, 33);
    jLabel6.setText("Rote Kontrollleuchte");
    this.add(jLabel6);
    
    jRadioButton1.setBounds(224, 112, 105, 49);
    jRadioButton1.setText("");
    this.add(jRadioButton1);
    
    jRadioButton2.setBounds(224, 248, 129, 57);
    jRadioButton2.setText("");
    this.add(jRadioButton2);
    // Ende Komponenten
    
    setVisible(true);
  } // end of public Motorlastüberwachung
  
  // Anfang Methoden
  public void actionPerformed(ActionEvent ae){
    System.out.println("Checkbox 1: "+jCheckBox1.isSelected());
    System.out.println("Checkbox 2: "+jCheckBox2.isSelected());
    System.out.println("Checkbox 3: "+jCheckBox3.isSelected());
    System.out.println("Checkbox 4: "+jCheckBox4.isSelected());
    
    if(ae.getSource()==((jCheckBox3.isSelected()== true &&jCheckBox4.isSelected()==true)||((jCheckBox1.isSelected()==true) &&(jCheckBox4.isSelected()==true))))
    {
      this.jRadioButton1.setBackground(Color.YELLOW);
    }
    if(ae.getSource()==(((jCheckBox1.isSelected()==true) && (jCheckBox2.isSelected()==true) && (jCheckBox4.isSelected()==true))||((jCheckBox1.isSelected()==true) &&( jCheckBox2.isSelected()==true) &&(jCheckBox3.isSelected()==true))||((jCheckBox2.isSelected()==true) &&(jCheckBox3.isSelected()==true) &&(jCheckBox4.isSelected()==true))||((jCheckBox1.isSelected()==true) &&(jCheckBox3.isSelected()==true) &&(jCheckBox4.isSelected()==true))))
    {
      this.jRadioButton1.setBackground(Color.RED);
    } 
    
  }
  // Ende Methoden
  
  public static void main(String[] args) {
    new Motorlastüberwachung("Motorlastüberwachung");
  } // end of main
  
} // end of class Motorlastüberwachung
 

Darlis

Commodore
Dabei seit
Jan. 2011
Beiträge
4.198
Es passiert nichts, weil dein Programm in Hintergrund abschmiert. Du versucht ae.getSource() mit einem Booleschen Wert zu vergleichen.

Kleine Anmeckerung: du holst dir zwar das ContentPane, machst aber nichts damit außer das Layout zu setzen.
 

Darlis

Commodore
Dabei seit
Jan. 2011
Beiträge
4.198
Oh mein Gott, was für ein hilfreicher Post. Du hättest zumindest eine deiner Meinung nach bessere Alternative zu Swing dabeischreiben können.
 

ty_ascot

Cadet 3rd Year
Dabei seit
März 2010
Beiträge
49
Sorry klar. Hab Aufgrund der Anforderung Windows only gerade mit einer WAF/WPF Anwendung begonnen. XAML und Features wie Data Binding sind einfach unglaublich gut.
 

Nanotic

Lieutenant
Ersteller dieses Themas
Dabei seit
Sep. 2010
Beiträge
556
Das ist ja alles schön und gut, nur wie bekomme ich jetzt den richtigen Vergleich hin?
Das "ae" mit einem neuen Objekt zu vergleichen bekomme ich hin, jedoch hapert es bei 2 bzw in meinem Fall mehreren Objekten.
 

Elfire

Cadet 1st Year
Dabei seit
Juni 2011
Beiträge
12
Wie Darlis schon gesagt hat, du vergleichst ein Objekt (in diesem Fall eine Checkbox) mit einem boolschen Wert. Das ist natürlich Quatsch und gibt false zurück. Deshalb wird der RadioButton nicht angemalt.
Lass einfach den Vergleich mit dem Objekt ('ae.getSource()==') weg.

Ausserdem, schreib 'jCheckBox1.isSelected()' anstatt 'jCheckBox1.isSelected()==true'. Ist kürzer und besser lesbar.

Edit: Danke an Darlis für die Korrektur, das dürfte gar nicht kompilieren.
 
Zuletzt bearbeitet:

Darlis

Commodore
Dabei seit
Jan. 2011
Beiträge
4.198
Top