awt: jlabel aktualisierung beim klick

Java-worker

Grünschnabel
Hallo ich habe mehrere jpanels in den einstellungen vorgenohmen werden können für mein hauptprogramm, und ein panel wo mir ein wert immer aktualisiert in einem jlabel angezeigt werden soll, dieser ist aber immer fix, weil er nicht nochmal neuausgelesen wird um es hinzuschreiben. so wie kann ich nun mein code optimieren so dass er (um fehler vorzubeugen) beim jeden klick den jpanel aktualisiert?
vielen dank für die hilfe schon im voraus ;)

mein code ausschnitt:
private JPanel getScaleSizeSlider()
{
JPanel panel = new JPanel(new GridLayout(3, 1));

JLabel label = new JLabel("Skalierungsgröße", SwingConstants.CENTER);

JTextField textField = new JTextField();
//textField.setColumns(6);
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
JTextField source = (JTextField) e.getSource();
double value = 0.0d;
try {
value = Double.parseDouble(source.getText());
}
catch (NumberFormatException ex) {
value = scene.getSphereScale();
}
finally {
View view=scene.getCanvas().getView();
view.setScreenScale(value);
}
}
});
// MUSS AKTUALISIERT WERDEN NACH JEDEM MAUSKLICK
JLabel label2 = new JLabel("aktuelle Skalierungsgröße: " +scene.getCanvas().getView().getScreenScale(), SwingConstants.CENTER);
panel.add(label);
panel.add(textField);
panel.add(label2);
return panel;
}

und hier wird die veränderung meist stattgefunden:
private JPanel getZoomPanel()
{
JPanel panel = new JPanel(new GridLayout(1, 3));

JButton ZoomInButton = new JButton("Zoom +");
ZoomInButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event)
{
View view=scene.getCanvas().getView();
double screenScale= view.getScreenScale();
view.setScreenScale(screenScale+0.01) ;
//System.out.println("Scale: "+view.getScreenScale());
//update(view.getScreenScale());
}
});
JButton ZoomOutButton = new JButton("Zoom -");
ZoomOutButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event)
{
View view=scene.getCanvas().getView();
double screenScale= view.getScreenScale() ;
view.setScreenScale(screenScale-0.01);
//System.out.println("Scale: "+view.getScreenScale());
//update(view.getScreenScale());
}
});
JButton ResetButton = new JButton("Reset");
ResetButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event)
{
scene.destroy();
}
});
panel.add(ZoomInButton);
panel.add(ZoomOutButton);
panel.add(ResetButton);
return panel;
}

ich weiss dass es sehr einfach gehen muss mit einem mauslistener aber ich krieg den nicht eingebaut... :rolleyes::mad::eek::confused:
bitte um hilkfe und am besten mit einer kleinen erkärung für die zukunft ;)
Lg Katja
 
Moin!
1. Bitte setze deinen Code mal in die dafür vorgesehenen Code Tags.
2. Halte dich bitte an die Netiquette, insbesondere was Rechtschreibung und Gross-/Kleinschreibung betrifft.

3. Versteh ich nicht so ganz, was du möchtest
und ein panel wo mir ein wert immer aktualisiert in einem jlabel angezeigt werden soll, dieser ist aber immer fix, weil er nicht nochmal neuausgelesen wird um es hinzuschreiben.
[...]
optimieren so dass er (um fehler vorzubeugen) beim jeden klick den jpanel aktualisiert?
Soll nun ein JPanel oder ein JLabel aktualisiert werden?

Erkläre das doch bitte nochmal...

*grüssle*
MeinerEiner
 
Ja ich möchte in einem Jpanel ein Jlabel "label2" aktualisieren :) och und entschuldigt bitte für meine Faulheit wegen groß/klein-Schreibung ;)
dies ist der Codeausschnitt von dem Jpanel wo mein Jlabel ist, sieh auch Kommentar im Code, diese stelle muss aktualisiert werden :)
Code:
   private JPanel getScaleSizeSlider()
    {
        JPanel panel = new JPanel(new GridLayout(3, 1));
        
        JLabel label = new JLabel("Skalierungsgröße", SwingConstants.CENTER);
        
        JTextField textField = new JTextField();
        //textField.setColumns(6);
        textField.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                JTextField source = (JTextField) e.getSource();
                double value = 0.0d;
                try {
                    value = Double.parseDouble(source.getText());
                }
                catch (NumberFormatException ex) {
                    value = scene.getSphereScale();
                }
                finally {
                   	View view=scene.getCanvas().getView();
                	view.setScreenScale(value);
                }
            }
        });
 // MUSS AKTUALISIERT WERDEN NACH JEDEM MAUSKLICK
        JLabel label2 = new JLabel("aktuelle Skalierungsgröße: " +scene.getCanvas().getView().getScreenScale(), SwingConstants.CENTER);
        panel.add(label);
        panel.add(textField);
        panel.add(label2);
        return panel;
    }

und hier finden die veränderung des wertes statt an den tasten zoom +/-
Code:
    private JPanel getZoomPanel()
    {
    	JPanel panel = new JPanel(new GridLayout(1, 3));
    	
        JButton ZoomInButton = new JButton("Zoom +");
        ZoomInButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
            	View view=scene.getCanvas().getView();
            	double screenScale= view.getScreenScale();
            	view.setScreenScale(screenScale+0.01) ;
            	//System.out.println("Scale: "+view.getScreenScale());
            	//update(view.getScreenScale());
            }
        });
        JButton ZoomOutButton = new JButton("Zoom -");
        ZoomOutButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
            	View view=scene.getCanvas().getView();
            	double screenScale= view.getScreenScale() ;
            	view.setScreenScale(screenScale-0.01);
            	//System.out.println("Scale: "+view.getScreenScale());
            	//update(view.getScreenScale());
            }
        });
        JButton ResetButton = new JButton("Reset");
        ResetButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
            	scene.destroy();
            }
        });
        panel.add(ZoomInButton);
        panel.add(ZoomOutButton);
        panel.add(ResetButton);
    	return panel;
    }
 
Und weist du nicht, wie man einen MouseListener hinzufügt, oder was ist das Problem?
Falls dem so ist, siehe hier: http://java.sun.com/docs/books/tutorial/uiswing/events/mouselistener.html

Dieses Label soll wohl die aktuelle Skalierungsgrösse zeigen. Und diese ändert sich doch nur (sofern ich das richtig überblicke), wenn einer der beiden Buttons gedrückt wird, oder? Dann wäre es doch sinnvoller, nach jedem Button Klick den Text neu zu setzen. (Und den Listener hast du doch schon...)

*grüssle*
MeinerEiner
 
Ja genau, das ist was ich möchte nach jedem Klick den Text neusetzen... nur dumm dass ich es nicht kann... Bitte um hilfe! gibt mir bitte die notwendigen Zeilen an. ich drehe durch hier... ich komme seit heute morgen einfach nicht weiter :( es ist deprimierend und erschräckend!
Wie kann ich den text neusetzen nach den Klicks?
Lg Katja
 
Danke für die Antworten MeinerEiner, aber ich weiss nicht an welcher stelle ich es einbinden soll und wie es mein Problem lösen könnte, weil ich muss ja auf ein anderes Panel und da auf ein Label zugreifen.
LG Katja
 
1. Dann erstelle das Label beispielsweise als globale Variable.
2. Erstelle dir weiterhin eine Methode, die den Text in diesem Label setzt.
3. Rufe in der entsprechenden Listener Methode genau diese Methode auf um den Text zu setzen..
4. Du solltest dich mal ein bisschen mit den Java Grundlagen beschäftigen!

*grüssle*
MeinerEiner
 
Danke das hat funktionier :))) nur die Textformatierung ist dabei verlohren gegangen. ja ich habe nich nie eine GUI programmiert, das ist eine echte herausforderung :)))
Have a nice day
Lg Katja
 
Zurück