dynamiczne generowanie gui

0

Witam,
chciałbym wiedzieć w jaki sposób przeładować widok. Mianowicie dla przykładu mam widok po odpaleniu aplikacji. No i widzę 3 guziki. Chciałbym żeby po kliknięciu na jakichś guzików nastąpiła następująca akcja.

Guziki zniakają, i pojawia się np. jakaś lista, albo pole tekstowe. Coś jakby przeładowanie strony internetowej. No i nie mogę tego osiągnąć. W funkcji main ładuje jframe i guziki, ale co potem ? Jak to przeładować?

0

możesz wrzucić wszystkie komponenty i odpowiednio poustawiać ich widoczność (metoda setVisible), albo podczas działania usuwać/dodawać (metoda add/remove) albo użyć odpowiedniego layout managera - CardLayout
http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html

0

Uznałem, że nie ma sensu tworzyć nowy wątek. Mam problem z kodem który napisałem:

public class Fixus {	
	public JPanel panel = new JPanel();
	public JFrame frame = new JFrame();
	
	public void addComponentToPane() {
      
    }
	
	public class ButtonListener implements ActionListener {		
		public void actionPerformed(ActionEvent e) {
			System.out.println("udalo sie");
			
			JButton button2 = new JButton("guzik 2");
			panel.add(button2);
			frame.getContentPane().add(panel);			
		}
	}
	
	public void launchFrame() {
		frame.setSize(800, 600);
		frame.setTitle("Fixus v. 0.0.1");
		frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
	
	public Fixus() {
		JButton button = new JButton("guzik 1");
		panel.add(button);
		frame.getContentPane().add(panel);
		
		button.addActionListener(new ButtonListener());
	}

	public static void main(String args[]) {
          Fixus gui = new Fixus();
          gui.launchFrame();
	}
}

problem: nie pojawia się button2. Zdarzenie jest obsłużone bo konsola wywala napis, ale guzik się nie pojawia. Co i gdzie źle robię? Właśnie dodawania elementów nie potrafię zrozumieć.

0

po dodaniu panelu do frame dodaj jeszcze wywołanie:

frame.validate();
0
lemmiwink napisał(a)

po dodaniu panelu do frame dodaj jeszcze wywołanie:

frame.validate();

super. wielkie dizęki. Dodałem validate() w metodzie dodającej drugi guzik i zadziałało.

1 użytkowników online, w tym zalogowanych: 0, gości: 1