Swing If/Else-Anweisung

Deizor

Mitglied
Hallo, ich meld mich mal wieder - da ich am verzweifeln bin..
Ich hab folgendes Problem:
beispiel.png
Ich habe einen grünen Pfeil als "Start" JButton welcher mich zu einem neuen Fenster führen soll, aber nur unter der Voraussetzung, dass in der JTextArea mindestens zwei Namen erscheinen (wie auf dem Bild zu sehen).. wie gebe ich diese Anweisung an? Die Namen erscheinen nur, wenn nach Eingabe der Namen auf "Speichern" gedrückt wird.

Der JButton um den es sich handelt findet ihr bei // Button zum nächsten Fenster
Mein Code sieht wie folgt aus:
Java:
public class MainMenue extends JFrame {

    public JPanel contentPane;
    private JTextField textField;
    private JTextField textField_1;
    private JTextField textField_2;
    private JTextField textField_3;
    private JButton btnSpeichern;
    private JTextField textField_4;
    private JLabel lblSpieler1;
    private JLabel label_player2;
    private JLabel label_player3;
    private JLabel label_player4;
    private JTextPane txtpnSoWerWill;
    private JLabel labelGroup;
    private JTextArea txtrNamensAusgabe;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MainMenue frame = new MainMenue();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MainMenue() {
       
       
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 800, 600);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
       
       
        // Überschrift
        txtpnSoWerWill = new JTextPane();
        txtpnSoWerWill.setForeground(Color.WHITE);
        txtpnSoWerWill.setFont(new Font("Open Sans", Font.BOLD, 16));
        txtpnSoWerWill.setText("So, wer will denn alles mitspielen?\r\n   Gebt hier die Spielernamen ein.");
        txtpnSoWerWill.setBounds(247, 130, 287, 57);
        txtpnSoWerWill.setOpaque(false);
        txtpnSoWerWill.setEditable(false);
        contentPane.add(txtpnSoWerWill);
       
       
        // Textfelder zur Namenseingebung
        textField = new JTextField();
        textField.setBounds(272, 198, 229, 30);
        contentPane.add(textField);
        textField.setColumns(10);
       
       
        textField_1 = new JTextField();
        textField_1.setBounds(272, 239, 229, 30);
        contentPane.add(textField_1);
        textField_1.setColumns(10);
       
   
        textField_2 = new JTextField();
        textField_2.setBounds(272, 280, 229, 30);
        contentPane.add(textField_2);
        textField_2.setColumns(10);
       
       
        textField_3 = new JTextField();
        textField_3.setBounds(272, 321, 229, 30);
        contentPane.add(textField_3);
        textField_3.setColumns(10);
       
       
        // Button um die Namen zu speichern
        btnSpeichern = new JButton("Speichern");
        btnSpeichern.setFont(new Font("Open Sans", Font.BOLD, 12));
        btnSpeichern.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String Spieler1, Spieler2, Spieler3, Spieler4, Spieleranzahl;
                try {
                    Spieler1 = textField.getText();
                    Spieler2 = textField_1.getText();
                    Spieler3 = textField_2.getText();
                    Spieler4 = textField_3.getText();
                   
                    Spieleranzahl = ("Die folgenden Spieler nehmen teil: \n" + Spieler1 + ", " + Spieler2 + ", " + Spieler3 + ", " + Spieler4 + ".");
                    txtrNamensAusgabe.setText(Spieleranzahl);
                    txtrNamensAusgabe.setEditable(false);
                   
                   
                } catch (Exception ea) {
                    JOptionPane.showMessageDialog(null, "Die Spielernamen wurden nicht korrekt eingegeben");
                }
            }
        });
        btnSpeichern.setBounds(316, 362, 140, 42);
        contentPane.add(btnSpeichern);
       
       
       
        // Textfeld um die Namen auszugeben
        txtrNamensAusgabe = new JTextArea();
        txtrNamensAusgabe.setEditable(false);
        txtrNamensAusgabe.setForeground(Color.WHITE);
        txtrNamensAusgabe.setFont(new Font("Open Sans", Font.BOLD, 14));
        txtrNamensAusgabe.setWrapStyleWord(true);
        txtrNamensAusgabe.setLineWrap(true);
        txtrNamensAusgabe.setBounds(272, 426, 229, 135);
        txtrNamensAusgabe.setOpaque(false);
        contentPane.add(txtrNamensAusgabe);
       
       
        // Button zum vorherigen Fenster
        JButton btnZurück = new JButton("");
        btnZurück.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                contentPane.setVisible(false);
                dispose();
                StartingScreen.main(null);
            }
        });
        btnZurück.setIcon(new ImageIcon("C:\\Users\\Daniel\\Desktop\\ArrowLeft.png"));
        btnZurück.setFont(new Font("Open Sans", Font.BOLD, 20));
        btnZurück.setBackground(UIManager.getColor("Button.background"));
        btnZurück.setForeground(Color.WHITE);
        btnZurück.setBounds(143, 426, 52, 57);
        btnZurück.setOpaque(false);
        btnZurück.setContentAreaFilled(false);
        btnZurück.setBorderPainted(false);
        contentPane.add(btnZurück);
       
       
       
        // Button zum nächsten Fenster WENN
        JButton btnStart = new JButton("");
        btnStart.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if () {
                    dispose();
                    Spiel spiel = new Spiel();
                    spiel.setVisible(true);
                else () {
                   
                }
                }
            }
        });
        btnStart.setIcon(new ImageIcon("C:\\Users\\Daniel\\Desktop\\Start-icon.png"));
        btnStart.setFont(new Font("Open Sans", Font.BOLD, 20));
        btnStart.setBackground(UIManager.getColor("Button.background"));
        btnStart.setForeground(Color.WHITE);
        btnStart.setBounds(600, 426, 52, 57);
        btnStart.setOpaque(false);
        btnStart.setContentAreaFilled(false);
        btnStart.setBorderPainted(false);
        contentPane.add(btnStart);
   
       
       
       
        // Hintergrundbild
        JLabel label = new JLabel("");
        Image img = new ImageIcon(this.getClass().getResource("/Hintergrund3.jpg")).getImage();
       
       
        // GruppenIcon
        labelGroup = new JLabel("");
        labelGroup.setIcon(new ImageIcon("C:\\Users\\Daniel\\Desktop\\Group-icon.png"));
        labelGroup.setBounds(544, 11, 108, 117);
        contentPane.add(labelGroup);
       
       
       
        // SpielerIcon1
        lblSpieler1 = new JLabel("");
        lblSpieler1.setIcon(new ImageIcon("C:\\Users\\Daniel\\Desktop\\Player1.png"));
        lblSpieler1.setBounds(205, 198, 32, 30);
        contentPane.add(lblSpieler1);
       
       
        // SpielerIcon2
        label_player2 = new JLabel("");
        label_player2.setIcon(new ImageIcon("C:\\Users\\Daniel\\Desktop\\Player1.png"));
        label_player2.setBounds(205, 239, 32, 30);
        contentPane.add(label_player2);
       
       
        // SpielerIcon3
        label_player3 = new JLabel("");
        label_player3.setIcon(new ImageIcon("C:\\Users\\Daniel\\Desktop\\Player1.png"));
        label_player3.setBounds(205, 280, 32, 30);
        contentPane.add(label_player3);
       
       
        // SpielerIcon4
        label_player4 = new JLabel("");
        label_player4.setIcon(new ImageIcon("C:\\Users\\Daniel\\Desktop\\Player1.png"));
        label_player4.setBounds(205, 321, 32, 30);
        contentPane.add(label_player4);
        label.setIcon(new ImageIcon(img));
        label.setBounds(0, 0, 780, 561);
        contentPane.add(label);
       
       
       
    }

}

Ich bedanke mich im Voraus für jegliche Hilfe!

Mit freundlichen Grüßen,
 

VfL_Freak

Top Contributor
Moin,
so ganz habe ich Deine Frage nicht verstanden ...
aber nur unter der Voraussetzung, dass in der JTextArea mindestens zwei Namen erscheinen (wie auf dem Bild zu sehen)..
ist es wirklich eine JTextArea oder sind es verschiedene Textfelder ??

Die Namen erscheinen nur, wenn nach Eingabe der Namen auf "Speichern" gedrückt wird.
Dann würde ich Deinen Button solange disablen, bis gespeichert wurde, rsp. erst mit dem Speichern aktivieren!
Jetzt kannst Du ggf. noch prüfen, ob es mind. zwei Namen sind ...

wie gebe ich diese Anweisung an?
Was genau meinst Du ??
Willst Du wissen, wie man den zugehörigen ActionListener anspricht??

VG Klaus
 

Deizor

Mitglied
Moin,
so ganz habe ich Deine Frage nicht verstanden ...

ist es wirklich eine JTextArea oder sind es verschiedene Textfelder ??


Dann würde ich Deinen Button solange disablen, bis gespeichert wurde, rsp. erst mit dem Speichern aktivieren!
Jetzt kannst Du ggf. noch prüfen, ob es mind. zwei Namen sind ...


Was genau meinst Du ??
Willst Du wissen, wie man den zugehörigen ActionListener anspricht??

VG Klaus

Hallo Klaus, vielen Dank für die schnelle Antwort!
Also, die vier kleinen Felder, in denen die Namen eingegeben werden sind normale JTextfields. Da, wo die eingebenen Namen ausgegeben werden ist aber eine JTextArea.
Die Idee mit dem Button disablen, solange nicht gespeichert wurde, ist echt gut. Das werde ich probieren umzusetzen.
Wie man den zugehörigen ActionListener anspricht weiß ich, ich komm jedoch nicht drauf, was genau ich in die IF/Else Anweisung eintippen soll. Also den Code, der mir quasi sagt "Solange Button Speichern nicht gedrückt worden ist und nicht mindestens 2 Felder ausgefüllt sind, erscheint beim Klicken des Buttons "Grüner Pfeil" die Meldung "Mindestens 2 Spielernamen müssen eingegeben werden". Außerdem soll solange diese Voraussetzung nicht erfüllt ist, sich das neue Fenster was eig. nach Klicken des "Grüner Pfeil" Buttons erscheint, nicht geöffnet werden.
Ich hoffe, dass ist so irgendwie verständlich.
 

JCODA

Top Contributor
Generell könntest du die verschiedenen TextFields in ein Array packen. Dann kannst du bequem über sie iterierten und zählen, wie viele tatsächlich Text beinhalten. Den Text bekommst du ja mit getText() und falls die Länge dieses Strings 0 ist, wird eben nicht hoch gezählt....
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...

Ähnliche Java Themen

Neue Themen


Oben