BuntOderNichtGUI

thor_norsk

Bekanntes Mitglied
Guten Tag, ich habe eine Aufgabe erhalten, und ich bin mir nicht sicher, ob ich die Aufgabe richtig verstanden habe?
Am Anfang ist das RadioButton ,,einfarbig'' gesetzt und in dem Kombinationsfeld sieht man die Farbe rot blass markiert.
Also: Ich habe verstehe die Aufgabe so, man muss anstatt einfarbig auf farbig setzen und die Farbe rot soll beim Programmstart erscheinen.
Muss der Text auch rot markiert sein ??? Am besten guckt euch den Code an.

Java:
package gui04;

import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;

public class BuntOderNichtGUI extends JFrame{
    //automatisch über Eclipse erzeugt
    private static final long serialVersionUID = 2007237315429965675L;

    //die verfügbaren Farben werden in einem Array ablegt
    private String[] farbAuswahl = {"Rot", "Gelb", "Blau", "Grün", "Schwarz"};
    
    //die Komponenten
    //für die Auswahl farbig oder nicht über RadioButtons
    private JRadioButton bunt, nichtBunt;
    private ButtonGroup gruppe;
    //für die Auswahl groß oder kleine
    private JCheckBox gross;
    //für die Auswahl der Farben
    private JComboBox <String> auswahl;
    //für das Beenden
    private JButton schaltflaecheBeenden;
    //für die Anzeige
    private JLabel anzeige;
    
    //die innere Klasse für die Listener
    //Sie implementiert jetzt auch den ItemListener
    class MeinListener implements ActionListener, ItemListener {

        //die Methode des ActionListeners
        //für die Farbauswahl und die Schaltfläche
        @Override
        public void actionPerformed(ActionEvent e) {
            Object ausloeser = e.getSource(); 
            if (ausloeser instanceof JComboBox) { 
                //was ist auswgewählt?
                if (auswahl.getSelectedItem().toString().equals("Rot"))
                    anzeige.setForeground(Color.RED);
                if (auswahl.getSelectedItem().toString().equals("Gelb"))
                    anzeige.setForeground(Color.YELLOW);
                if (auswahl.getSelectedItem().toString().equals("Blau"))
                    anzeige.setForeground(Color.BLUE);
                if (auswahl.getSelectedItem().toString().equals("Grün"))
                    anzeige.setForeground(Color.GREEN);
                if (auswahl.getSelectedItem().toString().equals("Schwarz"))
                    anzeige.setForeground(Color.BLACK);
            }
            //die Schaltfläche
            if (ausloeser instanceof JButton) {
                //eigentlich ist die Abfrage nicht nötig
                //das macht uns das Leben aber leichter, wenn neue Schaltflächen dazu kommen
                if (e.getActionCommand().equals("Beenden"))
                    System.exit(0);
            }
        }

        //für die CheckBox und die RadioButtons
        @Override
        public void itemStateChanged(ItemEvent e) {
            //zum einfacheren Zugriff die Quelle in einem Object ablegen
            Object ausloeser = e.getSource();
            //Wer hat das Ereignis ausgelöst?
            //die Checkbox?
            if (ausloeser instanceof JCheckBox) {
                //ist die CheckBox markiert?
                if (gross.isSelected() == true)
                    anzeige.setFont(new Font("Arial", Font.PLAIN,30));
                else
                    anzeige.setFont(new Font("Arial", Font.PLAIN,14));
            }
            //oder waren es die RadioButtons
            if (ausloeser instanceof JRadioButton) {               
                //ist bunt markiert?
                if (bunt.isSelected() == true)
                    auswahl.setEnabled(true);
                else
                    auswahl.setEnabled(false);
            }
        }
    }
    
    //der Konstruktor
    public BuntOderNichtGUI(String titel) {
        super(titel);
        
        gross = new JCheckBox("Größer darstellen");
        
        //die Liste erzeugen
        //die Daten kommen aus dem Array farbAuswahl
        auswahl = new JComboBox<String> (farbAuswahl);
        //erst einmal nicht aktivieren
        auswahl.setEnabled(false);
        
        //die Schaltfläche
        schaltflaecheBeenden = new JButton("Beenden");
        
        //die RadioButtons und die Gruppe
        bunt = new JRadioButton("bunt");
        nichtBunt = new JRadioButton("einfarbig");
        nichtBunt.setSelected(true);
                
        gruppe = new ButtonGroup();
        gruppe.add(bunt);
        gruppe.add(nichtBunt);
        
        //das Label
        anzeige = new JLabel("Der Text");
        //die Schriftart etc. setzen
        anzeige.setFont(new Font("Arial", Font.PLAIN,14));
        
        //ein Gridlayout mit 2 Spalten und etwas Abstand
        setLayout(new GridLayout(0,2,10,10));
        
        //die Komponenten hinzufügen
        //erst das Label
        add(anzeige);
        //daneben kommt die Checkbox
        add(gross);
        //der erste RadioButton
        add(bunt);
        //daneben die ComboBox
        add(auswahl);
        //der zweite RadioButton
        add(nichtBunt);
        //und links unten die Schaltfläche
        add(schaltflaecheBeenden);
        
        //die Listener verbinden
        MeinListener listener = new MeinListener();
        schaltflaecheBeenden.addActionListener(listener);
        gross.addItemListener(listener);
        
        bunt.addItemListener(listener);
        nichtBunt.addItemListener(listener);
        
        auswahl.addActionListener(listener);

        //die Standard-Aktion setzen
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        //das Fenster "packen" und anzeigen
        pack();
        setVisible(true);
    }
    public static void main(String[] args) {
        new BuntOderNichtGUI("Wie hätten Sie es den Gerne?");
    }
}

Ich habe einfach im Konstruktor folgende Veränderungen vorgenommen.
Java:
//der Konstruktor
    public BuntOderNichtGUI(String titel) {
        super(titel);
        
        gross = new JCheckBox("Größer darstellen");
        
        //die Liste erzeugen
        //die Daten kommen aus dem Array farbAuswahl
        auswahl = new JComboBox<String> (farbAuswahl);
        //erst einmal nicht aktivieren
        auswahl.setEnabled(true);
        
        //die Schaltfläche
        schaltflaecheBeenden = new JButton("Beenden");
        
        //die RadioButtons und die Gruppe
        bunt = new JRadioButton("bunt");
        nichtBunt = new JRadioButton("einfarbig");
        bunt.setSelected(true);
                
        gruppe = new ButtonGroup();
        gruppe.add(bunt);
        gruppe.add(nichtBunt);
        
        .........


Allerding der Text ist nicht rot !

Danke
 

Robert Zenz

Top Contributor
Du bsit zu frueh. Schau mal ein paar Zeilen darunter, der Listener fuer das Ereginis wird doch erst spaeter eingehaengt. Also ist dein umsetzen gut, aber es gibt halt keien Logik die darauf reagiert.
 

thor_norsk

Bekanntes Mitglied
Zuerst möchte ich mich bedanken.
Ich habe etwas im Forum gefunden und weiß nicht, an welcher Stelle bzw. wie ich den Code einbauen kann?

Java:
//Erweiterung und Behebung des Schönheitsfehler!
        if (bunt.isSelected() == true) {
            auswahl.setEnabled(true);
            auswahl.setSelectedIndex(0);
        }
 

Neue Themen


Oben