Swing Extern den Text eines nicht fetsgelegten Buttons bekommen.

DaCrazyJavaExpert

Bekanntes Mitglied
Hallo,
mit getText() kann man ja gewöhnlich den Textt einer Komponetente bekommen. Wie bekomme ich aber einen Text von einer Komponente, die ich nicht direkt aufrufe, sondern über eine Methode aufrufe? Also etwa so:
Ich habe hier die Methode, mir der ich den Textt eines unspezifischen Buttons bekommen will und ihn dann verarbeiten will:
Java:
private String addButtonsAction() {
        bill += getText() +  " "; // Ich möchte den Text eines Buttons bekommen.
        this.inputTxtArea.setText(bill);
        return bill;
    }
Die Methode will ich beim drücken eines Buttons, welcher in einer Liste ist ausführen:
Java:
private void addFeaturesToButton() {
        for (JButton button : buttons.getButtons()) {
            button.addActionListener(new ActionListener() {
               
                @Override
                public void actionPerformed(ActionEvent e) {
                    JButton b = (JButton) e.getSource();
                    b.addButtonsAction(); //Diese Methode will ich irgendwie aufrufen, ich weiß allerdings nicht wie ich es auf den spezifischen Button [button] der for-each-Schleife mache.
                }
            });
        }
    }
Ich hoffe mein Problem war vertsändlich formuliert und ihr könnt mir helfen. Vielen Dank.
 

JCODA

Top Contributor
Die Methode sollte nicht auf dem Button aufgerufen werden, sondern der jeweilige Button sollte der Methode übergeben werden, als Parameter.
 

DaCrazyJavaExpert

Bekanntes Mitglied
Ich hab noch ein Problem, will dafür aber jetzt nicht umbedingt einen neuen Thread aufmachen - hat sowieso noch mit dem gleichen Projekt zu tun.
Also, ich habe mir eine statische getInstance Methode in einer Klasse erstellt um eine Instanz von ihr in einer anderen Klasse nutzen zu können. Allerdings kommt da eine Exception.
Meine getInstance-Methode sieht so aus:
Java:
private static Calculator calcInstance;   

public static Calculator getInstance() {
        if (calcInstance == null) {
            calcInstance = new Calculator();
        }
        return calcInstance;
    }

Und diese Methode rufe ich in einer anderen Klasse so auf:
Java:
private Calculator calc;

public Buttons() {
        this.calc = Calculator.getInstance();
}
Als Exception kommt eine StackOverflowException:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at java.awt.Component.setBackground(Unknown Source)
at javax.swing.JComponent.setBackground(Unknown Source)
at javax.swing.LookAndFeel.installColors(Unknown Source)
at javax.swing.LookAndFeel.installColorsAndFont(Unknown Source)
at javax.swing.plaf.basic.BasicPanelUI.installDefaults(Unknown Source)
at javax.swing.plaf.basic.BasicPanelUI.installUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JPanel.setUI(Unknown Source)
at javax.swing.JPanel.updateUI(Unknown Source)
at javax.swing.JPanel.<init>(Unknown Source)
at javax.swing.JPanel.<init>(Unknown Source)
at javax.swing.JPanel.<init>(Unknown Source)
at de.m_ver.worktoolbox.gui.calculator.Calculator.<init>(Calculator.java:29)
at de.m_ver.worktoolbox.gui.calculator.Calculator.getInstance(Calculator.java:93)
Ich brauche die Instanz nur um JButtons aus der Klasse der Instanz in eine Liste (ein Stack) zu packen.
 

DaCrazyJavaExpert

Bekanntes Mitglied
Mein Konstuktor sieht so aus:
Java:
public Calculator() {
        this.initialComponents();
        this.initialCalcButtons();
        this.buttons = new Buttons();
        this.addFeaturesToButton();
        this.refactorComponents();
    }
In dem sehe ich jetzt keinen Fehler. Es ist ja irgendwas mit dem getInstance
 

X5-599

Top Contributor
Ich habe keine Ahnung wo das getInstance() als erstes aufgerufen wird. Ich denke das ist aber nicht so ausschlaggebend. Sagen wir es wird irgendwo folgendes gemacht:
Code:
Calculator.getInstance()

Es wird per
Code:
if (calcInstance == null) {
festgestellt, dass ein Calculator Objekt erzeugt werden muss. Also gehts in dessen Konstruktor weiter:
Hier wird dann
Code:
new Buttons()
aufgerufen. In dessen Konstruktor wird aber folgendes gemacht:

Code:
this.calc = Calculator.getInstance();

Das heisst wir treffen wieder auf:
Code:
if (calcInstance == null) {
Jetzt könnte man erwarten, dass er dieses if überspringt, weil wir hier ja bereits waren und die Klassenvariable "calcInstance" gefüllt sein müsste...

Dem ist aber nicht so. Denn: wir haben den Konstruktor von Calculator() noch gar nicht verlassen. Das Calculator Objekt ist noch nicht fertig erzeugt und somit ist die Klassenvariable "calcInstance" immer noch null.
Hier findet also eine "Endlosschleife" statt. Von getInstance() -> new Calculator() -> new Buttons() -> getInstance() -> new Calculator() -> new Buttons() usw
 

DaCrazyJavaExpert

Bekanntes Mitglied
Danke,
Calculator.getInstance() wird nur ein einziges mal aufgerrufen, und zwar im Konstruktor von der Klasse Buttons. Ich vertstehe es irgendwie nicht so ganz. Wie ändere ich es denn, dass diese getInstance Methode nicht immer wiederholt wird?
 

DaCrazyJavaExpert

Bekanntes Mitglied
Ja im Constuktor von der Klasse Calculator:
Java:
public Calculator() {
        this.initialComponents();
        this.initialCalcButtons();
        this.buttons = new Buttons();
        this.addFeaturesToButton();
        this.refactorComponents();
    }
Und in der Klasse Buttons rufe ich getInstance so auf:
Java:
private Calculator calc;

public Buttons() {
        this.calc = Calculator.getInstance(); //hier, einmal im Konstruktor
        this.buttons = new Stack<JButton>();
        this.addButtonsFeatures();
    }
 

X5-599

Top Contributor
Das muss auch noch irgendwo anders sein. Von selber führst sich ja kein Konstruktor aus. Wie gesagt entweder wird "Calculator.getInstance()" initial aufgerufen oder "new Buttons()"
Das ist aber auch egal. Fehler ist, dass durch den Aufruf von "new Buttons()" im Konstruktor von Calculator immer wieder "Calculator.getInstance()" aufgerufen wird. Nämlich weil getInstance() nie verlassen wird und somit die Klassen Variable "calcInstance" immer null sein wird. Darum wird immer wieder der Konstruktor von Calculator aufgerufen. Der ruft dann wieder den Konstruktor von Buttons auf usw.

Ich würde vorschlagen, du entfernst das Attribut "calc" aus der Klasse Buttons. Da Calculator eh ein Singleton ist, ist es meiner Meinung nach gar nicht notwendig es in ein Attribut zu legen. Wo du den Calculator brauchst, rufst du einfach Calculator.getInstance() auf und benutzt ihn so.
 

X5-599

Top Contributor
Gerne. Ansonsten könntest du dich mal mit dem Debugger beschäftigen. Wenn man damit so Schritt für Schritt durch den Code geht, sieht man am besten wie sich das Programm zur Laufzeit verhält.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Semox Swing JFrame extern erzeugen und in anderes JFrame einbetten AWT, Swing, JavaFX & SWT 7
G Drag and Drop von extern AWT, Swing, JavaFX & SWT 6
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
C JToggleButton disabled Text Color AWT, Swing, JavaFX & SWT 11
H JavaFX Label.Text mit bind an DoubleProperty binden AWT, Swing, JavaFX & SWT 3
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
FrittenFritze Text in Flying Saucer selectierbar machen AWT, Swing, JavaFX & SWT 0
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
I Rich Text drucken AWT, Swing, JavaFX & SWT 0
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
N Promt Text der Combobox AWT, Swing, JavaFX & SWT 0
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
N In Textdatei Text anfügen per GUI AWT, Swing, JavaFX & SWT 3
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
R Swing JTextField nicht-kopierbarer Text AWT, Swing, JavaFX & SWT 1
S Text-Info in der Taskbar anzeigen AWT, Swing, JavaFX & SWT 15
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
C JCheckBox disabled text color AWT, Swing, JavaFX & SWT 9
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
CptK Swing Button: ImageIcon unter den Text AWT, Swing, JavaFX & SWT 4
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
L JavaFX TableView kein content text ändern AWT, Swing, JavaFX & SWT 2
L JavaFX Anderer Text, wenn kein Platz ist. AWT, Swing, JavaFX & SWT 1
K JavaFX TextInputDialog Button Text ändern AWT, Swing, JavaFX & SWT 1
S 2D-Grafik affine Transformation für Text-Shape AWT, Swing, JavaFX & SWT 0
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
J Text in ein Textfeld eingeben und speichern AWT, Swing, JavaFX & SWT 27
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
C Swing Spinner als TableCellEditor - Text zu klein AWT, Swing, JavaFX & SWT 2
H JavaFX - Button und Text - Falsche Darstellung AWT, Swing, JavaFX & SWT 3
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
I JavaFX formatierter Text in PDF speichern AWT, Swing, JavaFX & SWT 4
T JavaFX Text des ProgressIndicators ändern AWT, Swing, JavaFX & SWT 2
E Swing Text verschwindet AWT, Swing, JavaFX & SWT 1
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
G Rectangle Breite richtet such an die Breite vom Text AWT, Swing, JavaFX & SWT 1
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
F Icons neben Text in Listview setzen AWT, Swing, JavaFX & SWT 2
K Rich Text FX von TomasMikula AWT, Swing, JavaFX & SWT 0
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
S JAVAFX HTMLEditor wrap text AWT, Swing, JavaFX & SWT 1
J JavaFX Translation Text/Label AWT, Swing, JavaFX & SWT 2
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1
A JavaFX HTMLEditor in Text umwandeln AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
J JavaFX Bestimmte Zellen im TableView ändern (Farbe und Text) AWT, Swing, JavaFX & SWT 1
2 JLabel - setText ändert den Text nicht AWT, Swing, JavaFX & SWT 4
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
stylegangsta JLabel anzuzeigenden Text zentrieren AWT, Swing, JavaFX & SWT 9
javampir Java FX Text verschwindet nicht AWT, Swing, JavaFX & SWT 9
Tausendsassa Text changed event handler jTextField AWT, Swing, JavaFX & SWT 3
Tom299 JavaFX Text oder Label benutzen AWT, Swing, JavaFX & SWT 4
E To get a color text on the TextArea AWT, Swing, JavaFX & SWT 4
E To get color text on the TextArea AWT, Swing, JavaFX & SWT 5
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
Z AWT JLabel setzt kein neuen Text AWT, Swing, JavaFX & SWT 6
D Event Handling Aus einer anderen Klasse heraus einen Text des JLabels ändern. AWT, Swing, JavaFX & SWT 12
T JavaFX Editable Combobox Text-Selektierung nach Trigger AWT, Swing, JavaFX & SWT 4
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
F JPanel "zeichnet" keinen Text AWT, Swing, JavaFX & SWT 14
U WYSIWYG Text-Editor für JFrames AWT, Swing, JavaFX & SWT 8
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
T MausClick soll TExt ändern AWT, Swing, JavaFX & SWT 6
J Text bei Eingabe löschen AWT, Swing, JavaFX & SWT 5
A SWT Auto completion in text box AWT, Swing, JavaFX & SWT 5
C Geloest: JTextfield: Titel automatisch entfernen, sobald Text eingegeben wird AWT, Swing, JavaFX & SWT 1
I Text zur Linie zeichnen AWT, Swing, JavaFX & SWT 1
J JavaFX JavaFX Probleme bei der Anzeige von Text AWT, Swing, JavaFX & SWT 18
X AWT Text der mit Graphics "drawString(...)" geschreiben wurde wieder löschen. AWT, Swing, JavaFX & SWT 6
O Swing Text aus Textfield auslesen AWT, Swing, JavaFX & SWT 8
B Text auf Display ausgeben [LWJGL] AWT, Swing, JavaFX & SWT 2
G Text im textfeld in einem Editor anzeigen AWT, Swing, JavaFX & SWT 18
S TextArea get Selected row(Text) AWT, Swing, JavaFX & SWT 6
A Radio Buttons sollen den Text der text Area bestimmen AWT, Swing, JavaFX & SWT 9
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
J LayoutManager Text Spielerein GUI AWT, Swing, JavaFX & SWT 2
H Javafx - Styled Text AWT, Swing, JavaFX & SWT 5
M Text Area 1. Zeile oben AWT, Swing, JavaFX & SWT 4
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
R JavaFX Automatischer Zeilenumbruch in Text AWT, Swing, JavaFX & SWT 13
P JList/JScroolPane Text verschieben und text wrappen AWT, Swing, JavaFX & SWT 3
F Dialog mit Titel, Text und Ok Button AWT, Swing, JavaFX & SWT 2
T Swing HTML Text aus JLabel ohne "HTML-Tags" in String einlesen AWT, Swing, JavaFX & SWT 5
TheJavaKid DocumentListener soll Text in JTextField ändern AWT, Swing, JavaFX & SWT 4
K JEditorPane Text einfügen AWT, Swing, JavaFX & SWT 4
A Text (String) zu einer Box hinzufügen AWT, Swing, JavaFX & SWT 16
B SWT Text - zeilenumbruch AWT, Swing, JavaFX & SWT 2
TheWhiteShadow Swing Document Text Position in Pixel AWT, Swing, JavaFX & SWT 2
J Swing Text kürzendes JLabel AWT, Swing, JavaFX & SWT 12
J Swing TextArea mit nicht-editierbarem Text AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben