Swing neuer Aufbau des Frames nach Click

javapklein

Mitglied
Hi,

ich habe ein frame definiert und es wird auch ausgegeben mit einem Button zum klicken.
Im Frametext steht "Click Counter + countValue".
Ich möchte nach jedem Click auf dem Button das das Frame aktualisiert wird im Text.
Sprich der Counter im Frametext soll hochgezählt werden.
Wie mache ich das ohne ständig ein neues Frame zu öffen?
Dies ist meine erste Anwendung mit Swing.
Für Lösungsvorschläge bin ich sehr dankbar.
Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class ClickCounter {
	static int countValue = 0;
	
	static class ClickCounterListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			System.out.println("Click Counter");
		}		
	}
	public static void main(String[] args) {
		
		JFrame frame = new JFrame("Click Counter " + countValue);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setBounds(200, 200, 300, 300);		
		JButton button = new JButton("0");
		frame.add(button); 						
		ActionListener listener = new ClickCounterListener();
		button.addActionListener(listener); 		
		frame.setVisible(true);			
	}
}
 
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class ClickCounter {
	
	private JFrame fr;
	private JButton btn;
	private int countValue; // is gleichbedeutend mit private int countValue = 0;
	
	public ClickCounter(){
		fr = new JFrame("Click Counter " + countValue);
		fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		btn = new JButton("" + countValue);
			btn.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent arg0) {
				countIt();	
				}
			});
		
		fr.add(btn);
		
		fr.setSize(300, 300);
		fr.setLocationRelativeTo(null);
		fr.setVisible(true);
	}
	
	public void countIt(){
		countValue++;
		fr.setTitle("Click Counter " + countValue);
		btn.setText("" + countValue);
	}
	
	public static void main(String[] args) {
		new ClickCounter();
	}
	

}
 
Zuletzt bearbeitet von einem Moderator:
Mit den Tipps kann ich im Moment noch nicht anfangen.
Mit der Methode "setTitle" im JFrame. Wie mache ich diese dem ActionListener zugänglich?
Wie rufe ich JFrame.contentPanel.repaint() auf?
Ich habe versucht dies einzubauen, bekommen jedoch nur Compilefehler.
Es es möglich mit dies im Code anzugeben.
 
du hast meinen post verpasst ^^

//EDIT: @Airborne, meinst wohl eher getContentPane()!?😉
 
Zuletzt bearbeitet von einem Moderator:
Was du da anpasst, is mir egal, wichtig ist, dass du die Unterschiede zu deinem Code siehst und verstehst. 😉

Gruß Vanny
 
//EDIT: @Airborne, meinst wohl eher getContentPane()!?😉

Holy! Schneller tippen ist nicht immer gut...
Ja, klar, das muss
Code:
JFrame.getContentPane().repaint()
heißen.

@ javapklein
in deinem Fall baust du im ClickCountListener am Ende ein
Code:
frame.getContentPane().repaint();
ein. Das sorgt dafür, dass zwar nicht der JFrame selbst, wohl aber der komplete Inhalt neu gezeichnet wird. Dadurch wird auch dein Label neu gesetzt und zeigt den neuen Zählerstand.
 

Zurück
Oben