Jlabel Text von anderen Klasse aus ändern

Referenz auf das Objekt, in der Klasse eine Methode zum setzen des Textes des JLabels einfügen. <referenz>.setText(<text>); fertig!
 
Danke
Ich kenne mich mit Java noch nicht sehr gut aus., weshalb ich nicht genau verstehe was du meinst.
Das ist meine GUI Klasse

Java:
package me.Rechner;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigInteger;

/**
* Created by Admin_Trommer on 01.10.2015.
*/
public class Rechner {
    private JPanel panel;
    private JButton ausrechnenButton;
    private JTextField textField1;
    private JTextField textField2;
    private JLabel ergebniss;
    private JRadioButton Fakultaet;
    private JRadioButton ggT;
    private JRadioButton teilen;
    private JRadioButton zusammenzählenRadioButton;

    public static void main(String[] args) {
       JFrame frame = new JFrame("Rechner");
        frame.setContentPane(new Rechner().panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public Rechner() {
        ausrechnenButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (ggT.isSelected() | Fakultaet.isSelected() | teilen.isSelected() | zusammenzählenRadioButton.isSelected()) {

                    if (!textField2.getText().equalsIgnoreCase("")) {

                        if (Fakultaet.isSelected()) {
                            me.Rechner.Fakultaet.fakultaet(Integer.parseInt(textField2.getText()));
                        }

                        if (ggT.isSelected()) {
                            GGT.ggt(Integer.parseInt(textField2.getText()), Integer.parseInt(textField1.getText()));
                        }

                        if (teilen.isSelected()) {
                            Teilen.Teilen(Integer.parseInt(textField2.getText()), Integer.parseInt(textField1.getText()));
                        }

                        if (zusammenzählenRadioButton.isSelected()) {
                            //Zusammenzählen.zusammenzählen();
                        }

                    } else {
                        JOptionPane.showMessageDialog(null, "Biite erst Zahl eingaben !");
                    }
                }else{
                    JOptionPane.showMessageDialog(null, "Bitte erst Rechenoption auswählen");
                }

            }
        });



        Fakultaet.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                ggT.setSelected(false);
                teilen.setSelected(false);
                textField1.setEnabled(false);
                textField1.setText("");
                textField2.setText("");
                zusammenzählenRadioButton.setSelected(false);
            }
        });


        ggT.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Fakultaet.setSelected(false);
                teilen.setSelected(false);
                textField1.setEnabled(true);
                textField1.setText("");
                textField2.setText("");
                zusammenzählenRadioButton.setSelected(false);
            }
        });

        teilen.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Fakultaet.setSelected(false);
                ggT.setSelected(false);
                textField2.setEnabled(true);
                textField1.setEnabled(true);
                zusammenzählenRadioButton.setSelected(false);
            }
        });

        zusammenzählenRadioButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Fakultaet.setSelected(false);
                teilen.setSelected(false);
                ggT.setSelected(false);
                textField2.setEnabled(true);
                textField1.setEnabled(true);
            }
        });
    }
}

Und das meine andere Klasse von der aus ich den Text von dem Label ergebniss ändern will:
Java:
package me.Rechner;

import javax.swing.*;

/**
* Created by Admin_Trommer on 03.10.2015.
*/
public class Teilen {
    static int ergebniss = 0;
    public static void Teilen(int a, int b){
        ergebniss = a / b;
        JOptionPane.showMessageDialog(null, a + "/" + b + " = " + ergebniss );
    }
}
 
Ich werde sicher nicht deinen Code durchgehen, aber liefere dir ein lauffähiges Beispiel:
Java:
public class Test {
	
	public static void main(String... args) {
		B b = new B(new A());
		b.addAndPrint(10, 5);
	}
	
}

class A {
	public void print(int x) {
		System.out.println(x);
	}
}

class B {
	private A a;
	
	public B(A a) {
		this.a = a;
	}
	
	public void addAndPrint(int x, int y) {
		a.print(x + y);
	}
}
 
Warum immer gleich mit GUIs und Spielen anfangen, wenn man keine Ahnung hat von den Grundlagen?

Du brauchst dringend Verständnis für OOP und wie man Objekte an ein Anderes weitergibt.
 
1. Um zu erreichen, dass von mehreren zusammengehörigen JRadioButtons immer nur einer ausgewählt sein kann, verwendet man eine ButtonGroup.
2. Deine Teilen-Klasse hat nur eine Methode. Diese Methode könntest du auch noch in deine Rechner-Klasse einbauen.
Um es mal etwas grundsätzlicher zu beschreiben:
Wenn du eine Gui-Klasse hast und eine oder mehrere Klassen, die Berechnungen oder allgemein "Services" ausführen, sollte die Service-Klasse nicht die Gui-Klasse oder die UI Elemente der Gui kennen, sondern umgekehrt: Die Gui Klasse kennt die Services und verarbeitet deren Ergebnisse.
Wenn du bei deiner Teilen-Klasse bleiben möchtest, solltest du nicht so verfahren, dass du der Teilen-Klasse eine Referenz auf das JLabel verpasst, und in der Teilen-Methode den Text des JLabels ändert, sondern du rufst in einer geeigneten Methode der Gui-Klasse die Teilen-methode auf und verwendest den Rückgabewert der teilen-Methode 8den du einbauen musst, da die Teilen-Methode aktuell nüscht zurückgibt), um den JLabel-Text zu setzen. Dafür braucht es keine Referenz, weil die Gui-Klasse das JLabel sowieso kennt.
 
Jetzt verstehe ich garnichts mehr :-(
Hey, BukkitDEV,
Füge in deine public Rechner das hinzu:

Java:
public void setJLabelText(String Text){
    ergebniss.setText(Text);
}

wenn du das gemacht hast, kannst du mit der Zeile

Rechner.setJLabelText();

den Text aus einer anderen Klasse ändern, indem du in den Klammern den gewünschten Inhalt des JLabels
angibst.

Ich hoffe, ich habe dir geholfen.
 
Zuletzt bearbeitet von einem Moderator:

Zurück
Oben