Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ereignisbehandlung in Java

Forumthread: Ereignisbehandlung in Java

Ereignisbehandlung in Java
11.04.2023 13:13:49
billy21

Ich kann den unten verlinkten Code nicht abrufen, um das zu erreichen, was ich möchte.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Gui {

    static JFrame frame;
    static JLabel label;

    public static void main (String[] args) {
        Gui gui = new Gui();
        gui.go();
    }

    public void go () {
        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,300);
        frame.setVisible(true);

        MyDrawPanel panel = new MyDrawPanel();
        frame.getContentPane().add(BorderLayout.CENTER, panel);

        label = new JLabel("I'm a label");
        frame.getContentPane().add(BorderLayout.WEST, label);

        JButton colorButton = new JButton("Change Colors");
        ColorButtonListener colorButtonListener = new ColorButtonListener();
        colorButton.addActionListener(colorButtonListener); 
        frame.getContentPane().add(BorderLayout.SOUTH, colorButton);

        JButton labelButton = new JButton("Change Label");
        LabelButtonListener labelButtonListener = new LabelButtonListener();
        labelButton.addActionListener(labelButtonListener); 
        frame.getContentPane().add(BorderLayout.EAST, labelButton);
    }
}

class ColorButtonListener implements ActionListener {
    JFrame frame = Gui.frame;
    public void actionPerformed (ActionEvent event) {
        frame.repaint();
    }
}

class LabelButtonListener implements ActionListener {
    JLabel label = Gui.label;
    public void actionPerformed (ActionEvent event) {
        if (label.getText() == "That hurt") {
            label.setText("I'm a label");
        } else {
            label.setText("That hurt");
        }
    }
}

class MyDrawPanel extends JPanel {
    public void paintComponent (Graphics g) {
        Graphics2D g2d = (Graphics2D) g;

        int red = (int) (Math.random() * 256);
        int green = (int) (Math.random() * 256);
        int blue = (int) (Math.random() * 256);
        Color startColor = new Color(red, green, blue);

        red = (int) (Math.random() * 256);
        green = (int) (Math.random() * 256);
        blue = (int) (Math.random() * 256);
        Color endColor = new Color(red, green, blue);

        GradientPaint gradient = new GradientPaint(70, 70, startColor, 150, 150, endColor);
        g2d.setPaint(gradient);
        g2d.fillOval(0, 0, this.getWidth(), this.getHeight());

    }
}


Eine Panel-Klasse wird verwendet, um einen Kreis zu zeichnen, und das Panel wird dann im mittleren Bereich des Rahmens positioniert.

Eine Beschriftung befindet sich im westlichen Bereich des Rahmens, und zwei Schaltflächen, colorButton (befindet sich im Süden) und labelButton (befindet sich im Osten), sollten den Kreis bzw. die Beschriftung steuern. ColorButtonListener und LabelButtonListener sind zwei Klassen, die die ActionListener-Schnittstelle implementieren, die mit colorButton bzw. labelButton verknüpft sind. Wenn Sie darauf klicken, sollte die Farbschaltfläche einen Kreis mit verschiedenen Farben malen, und die Etikettenschaltfläche sollte zwischen den Sätzen „Ich bin ein Label“ und „Das tut weh“ umschalten.
Mein aktuelles Problem ist mit dem Label-Button. Wenn Sie darauf klicken, ändert es den Text (wie erwartet), aber es zeichnet auch den Kreis neu. Diese Schaltfläche sollte nicht zum Neuzeichnen des Kreises verwendet werden. Die Farbtaste funktioniert wie erwartet.

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ereignisbehandlung in Java
11.04.2023 13:36:28
Oberschlumpf
du schreibst kein "Hallo", ok, dann tu ich das auch nich...
bist du sicher, dass du mit JAVA-Code hier, in einem Excel(VBA-Code)-Forum, richtig bist?
wenn ja, dann zeig bitte mal per Upload eine Excel-Bsp-Datei mit Bsp-Daten und dem Java-Code, mit das bisher in Excel funktioniert - oder erklär mir das Andere, dass ich wohl falsch oder gar nicht verstanden habe :-)


Anzeige
AW: Ereignisbehandlung in Java
11.04.2023 13:47:26
Phio
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Main {

    static JFrame frame;
    static JLabel label;
    static MyDrawPanel panel;

    public static void main (String[] args) {
        Gui gui = new Gui();
        gui.go();
    }

    static class Gui {
        public void go () {
            frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400,300);
            frame.setVisible(true);

            panel = new MyDrawPanel();
            frame.getContentPane().add(BorderLayout.CENTER, panel);

            label = new JLabel("I'm a label");
            frame.getContentPane().add(BorderLayout.WEST, label);

            JButton colorButton = new JButton("Change Colors");
            ColorButtonListener colorButtonListener = new ColorButtonListener();
            colorButton.addActionListener(colorButtonListener);
            frame.getContentPane().add(BorderLayout.SOUTH, colorButton);

            JButton labelButton = new JButton("Change Label");
            LabelButtonListener labelButtonListener = new LabelButtonListener();
            labelButton.addActionListener(labelButtonListener);
            frame.getContentPane().add(BorderLayout.EAST, labelButton);
        }
    }

    static class ColorButtonListener implements ActionListener {
        public void actionPerformed (ActionEvent event) {
            panel.changeColors();
        }
    }

    static class LabelButtonListener implements ActionListener {
        public void actionPerformed (ActionEvent event) {
            if (Main.label.getText().equals("That hurt")) {
                Main.label.setText("I'm a label");
            } else {
                Main.label.setText("That hurt");
            }
            Main.label.repaint();
        }
    }

    static class MyDrawPanel extends JPanel {
        private Color startColor;
        private Color endColor;

        public MyDrawPanel() {
            changeColors();
        }

        public void changeColors() {
            int red = (int) (Math.random() * 256);
            int green = (int) (Math.random() * 256);
            int blue = (int) (Math.random() * 256);
            startColor = new Color(red, green, blue);

            red = (int) (Math.random() * 256);
            green = (int) (Math.random() * 256);
            blue = (int) (Math.random() * 256);
            endColor = new Color(red, green, blue);

            repaint();
        }

        public void paintComponent (Graphics g) {
            Graphics2D g2d = (Graphics2D) g;

            GradientPaint gradient = new GradientPaint(70, 70, startColor, 150, 150, endColor);
            g2d.setPaint(gradient);
            g2d.fillOval(0, 0, this.getWidth(), this.getHeight());
        }
    }
}
Damit sollte es gehen! Grüße


Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige