Zum Inhalt springen

SWING Applikation actionPerformed Problem


Rain

Empfohlene Beiträge

Hallo!

Habe schon lange nichts mehr mit Java gemacht, habe es aber nun im Studium aufgebrummt bekommen und komme bei dieser Swing Applikation einfach nicht weiter:


import javax.swing.JFrame;

import javax.swing.JLabel;

import java.awt.*;

import javax.swing.JPanel;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import javax.swing.JButton;

import javax.swing.JOptionPane;

import javax.swing.JComboBox;

import javax.swing.JTextField;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.Vector;



public class Fenster extends JFrame implements ActionListener {

    Vector al = new Vector();

    JLabel label = new JLabel();

    JButton button = new JButton();

    JButton info = new JButton();

    JButton sort_button = new JButton();

    JButton shuffle = new JButton();

    JComboBox students = new JComboBox();

    JTextField name_text = new JTextField();

    JTextField perskz_text = new JTextField();

    JButton add_button = new JButton();


    public Fenster() {

        try {

            jbInit();

        } catch (Exception ex) {

            ex.printStackTrace();

        }


        try {

            jbInit();

        } catch (Exception exception) {

            exception.printStackTrace();

        }

    }


    private void jbInit() throws Exception {

        getContentPane().setLayout(null);

        label.setFont(new java.awt.Font("Comic Sans MS", Font.PLAIN, 16));

        label.setForeground(Color.blue);

        label.setToolTipText("HI");

        label.setText("My First SWING Application");

        label.setBounds(new Rectangle(30, 23, 232, 30));

        button.setBounds(new Rectangle(18, 269, 110, 25));

        button.setActionCommand("exit_button");

        button.setText("Exit");

        info.setBounds(new Rectangle(161, 270, 110, 25));

        info.setToolTipText("");

        info.setActionCommand("info_button");

        info.setText("Information");

        sort_button.setBounds(new Rectangle(20, 208, 110, 25));

        sort_button.setActionCommand("sort_button");

        sort_button.setText("Sort List");

        shuffle.setBounds(new Rectangle(161, 209, 111, 25));

        shuffle.setActionCommand("shuffle_button");

        shuffle.setText("Shuffle List");

        students.setFont(new java.awt.Font("Comic Sans MS", Font.BOLD, 10));

        students.setActionCommand("studentscomboBoxChanged");

        students.setBounds(new Rectangle(7, 84, 276, 26));

        name_text.setText("Insert Name here");

        name_text.setBounds(new Rectangle(32, 121, 158, 25));

        perskz_text.setText("Insert Perskz here");

        perskz_text.setBounds(new Rectangle(32, 154, 157, 25));

        add_button.setBounds(new Rectangle(198, 141, 68, 22));

        add_button.setToolTipText("");

        add_button.setActionCommand("add_button");

        add_button.setText("Add");


        button.addActionListener(this);

        info.addActionListener(this);

        sort_button.addActionListener(this);

        shuffle.addActionListener(this);

        students.addActionListener(this);

        add_button.addActionListener(this);


        this.getContentPane().add(sort_button,null);

        this.getContentPane().add(shuffle,null);

        this.getContentPane().add(students,null);

        this.getContentPane().add(name_text,null);

        this.getContentPane().add(perskz_text,null);

        this.getContentPane().add(add_button,null);

        this.getContentPane().add(button,null);

        this.getContentPane().add(info,null);

        this.getContentPane().add(label,null);

    }


    public void actionPerformed(ActionEvent e) {

        if (e.getActionCommand().equalsIgnoreCase("exit_button")) {

            JOptionPane.showMessageDialog(this, "EXIT BUTTON PRESSED");

          //  System.exit(0);

        }

       if (e.getActionCommand().equalsIgnoreCase("info_button")) {

            JOptionPane.showMessageDialog(this, "JAVA Übungsbeispiel");

        }

        if (e.getActionCommand().equalsIgnoreCase("add_button")) {

            System.out.println("ADD PRESSED");

        }

        if (e.getActionCommand().equalsIgnoreCase("shuffle_button")) {

            System.out.println("Shuffling List");

        }

    }


    public static void main(String[] args) {

    Fenster f1 = new Fenster();

    f1.setSize(300, 350);

    f1.setTitle("SWING Window");

    f1.setResizable(true);

    f1.setVisible(true);

    f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

    f1.setLocation((screen.width - f1.getSize().width) / 2,

                   (screen.height - f1.getSize().height) / 2);

}

}

Das Problem: Bei mir wird die action performed methode immer doppelt aufgerufen!

Wenn ich den ADD Button drücke, dann ist die ausgabe:

ADD PRESSED

ADD PRESSED

Diese Ausgabe sollte aber bei einfachen Klick nur einmal kommen!!!

Arbeite mit dem JBuilder und Java 1.4

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi!

Mach deine actionPerformed()-Methode mal folgendermaßen:

public void actionPerformed(ActionEvent e) {

	if (e.getActionCommand().equalsIgnoreCase("exit_button")) {

		JOptionPane.showMessageDialog(this, "EXIT BUTTON PRESSED");

		//  System.exit(0);

	}

	[B][I]else [/I][/B]if (e.getActionCommand().equalsIgnoreCase("info_button")) {

		JOptionPane.showMessageDialog(this, "JAVA Übungsbeispiel");

	}

	[B][I]else [/I][/B]if (e.getActionCommand().equalsIgnoreCase("add_button")) {

		System.out.println("ADD PRESSED");

	}

	[B][I]else [/I][/B]if (e.getActionCommand().equalsIgnoreCase("shuffle_button")) {

		System.out.println("Shuffling List");

	}

}
Tipp: Du kannst übrigens auch auf die Verwendung von ActionCommands verzichten, wenn du willst. Das machst du zum Beispiel wie folgt:
public void actionPerformed(ActionEvent e) {

	if (e.getSource() == sort_button ) {

		//  ...

	}

	if (e.getSource() == add_button ) {

		//  ...

	}

	// etc. ...

}

Die Methode getSource() des ActionEvent's liefert dir (wie der Methodenname schon sagt) das Quellobjekt bzw. den Auslöser des Events zurück. Das kannst du direkt mit deiner Objektreferenz vergleichen.

Aber das nur nebenbei...

Ach ja, es reicht übrigens vollkommen aus, wenn du die Methode jbInit() nur einmal im Konstruktor aufrufst... ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...