Label ändert ändert sich nicht

chrsch

Neues Mitglied
Hallo, ich möchte gern, dass sich mit einem Klick auf den Button der Text des zweiten Labels ändert.
Es tut sich aber nichts, obwohl der Eintrag im Feld geändert zu werden scheint. Hab repaint() schon probiert.
Was mache ich da denn falsch?

Ich hab das ursprünglich mit NetBeans gebastelt, aber davon steht inzwischen nicht mehr viel da...der Sinn
des ganzen soll auch bitte erstmal egal sein.
Wäre nett wenn mal jemand drüber schauen würde, ich bin ziemlicher Anfänger und schätze
der Fehler ist total bescheuert und offensichtlich, leider im Moment für mich noch nicht :/

Java:
import java.awt.*;
import javax.swing.*;

public class FensterE {
   
    public FensterE()
    { 

    }

    
    private void initComponents() {
        final JFrame frame = new JFrame();
        brett = new javax.swing.JPanel(new GridLayout(5,1));
        
        eingabeFeld = new javax.swing.JTextField();
        btn = new javax.swing.JButton();
        labelNA = new javax.swing.JLabel();

        frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        frame.setTitle("Programm");
              
        label1.setText(strings[0]);
        label2.setText(strings[1]);
        label3.setText(strings[2]);


        brett.add(label1);
        brett.add(label2);
        brett.add(label3);
        
        
        btn.setText("OK");
        btn.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BtnActionPerformed(evt);
            }
        });

        labelNA.setText("Übertrage:");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(frame.getContentPane());
        frame.getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(labelNA)
                        .addContainerGap(243, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(eingabeFeld, javax.swing.GroupLayout.DEFAULT_SIZE, 232, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btn, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(27, 27, 27))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(brett, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(23, Short.MAX_VALUE))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(16, 16, 16)
                .addComponent(brett, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(labelNA)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(eingabeFeld, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btn))
                .addContainerGap(25, Short.MAX_VALUE))
        );

        frame.pack();
        frame.setVisible(true);
        
    }

    private void BtnActionPerformed(java.awt.event.ActionEvent evt)
    {
           strings[2]=eingabeFeld.getText();
    }
       
    public static void main(String args[])
    {
        FensterE win = new FensterE();
        win.initComponents();
    }
   
    private javax.swing.JPanel brett;
    private javax.swing.JButton btn;
    private javax.swing.JLabel labelNA;
    private javax.swing.JTextField eingabeFeld;
    private String[] strings = {"erste","zweite","dritte"};
    private javax.swing.JLabel label1 = new javax.swing.JLabel(strings[0]);
    private javax.swing.JLabel label2 = new javax.swing.JLabel(strings[1]);
    private javax.swing.JLabel label3 = new javax.swing.JLabel(strings[2]);
    
}
 
[c]strings[2]=eingabeFeld.getText();[/c]

Warum sollte sich der Text des Labels ändern? Hier wird nur der Test aus dem Eingabefeld in das Array geschrieben.
Wenn du den Text des Labels ändern willst, muss du die [c]meinLabel.setText("mein Text");[/c] Methode des Labels benutzen.
 
Da ist was dran...
ich dachte man könnte die Initialisierung, die ja auf das Feld zeigt iwie wiederholen...ala repaint() eben.
Dann müsste ja der neue String eingesetzt werden dachte ich.
Ich sollte wohl aber besser die Initialisierung in eine Methode packen und dann diese irgendwie nochmal starten, was?
 
vorsicht!!!

Code:
bla = "keks";  referenz auf string object mit keks
lol(bla);
System.out.println(bla);//enthält hier immer noch keks, da sich möööp ja in einer anderen referenz befindet.

void bla(String text){ //referent auf keks noch
text = "möööp" //da strings immutable wird neuer string erstellt und damit auch eine neue referenz, statt das sich wie erwartet die bestehende ändert (ist halt kein pointer)
 

Zurück
Oben