AWT ukrywanie formatek po kliknięciu na przycisk

0

Natknąłem się na pewien problem. W formularzu istnieją 3 TextField'y, które są pokazywane po kliknięciu na przycisk "więcej". Niestety jak nie próbowałem, to nie pokazują się. Zostają pokazane dopiero po zmianie przez użytkownika rozmiaru appletu.

Przeszedłem więc do prostego przykładu z ukrywaniem i pokazywaniem przycisków. Po kliknięciu na przycisk 1 pojawić ma się przycisk 2.

package zajecia2;

import java.applet.Applet;
import java.awt.Button;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;

public class test extends Applet implements ActionListener
{
	Button b1;
	Button b2;
	
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		super.destroy();
	}

	@Override
	public void init() {
		// TODO Auto-generated method stub
		super.init();
		b1=new Button("lipa");
		b1.addActionListener(this);
		b2=new Button("ala");
		this.setLayout(new BoxLayout(this,BoxLayout.X_AXIS));
		this.add(b1);
		b2.setVisible(false);
		this.add(b2);
		this.setVisible(true);
	}

	@Override
	public void start() {
		// TODO Auto-generated method stub
		super.start();
	}

	@Override
	public void stop() {
		// TODO Auto-generated method stub
		super.stop();
	}

	@Override
	public void paint(Graphics g) {
		// TODO Auto-generated method stub
		super.paint(g);
	}

	public void actionPerformed(ActionEvent e)
	{
		b2.setVisible(true);
		repaint();
	}

}

Efekt jest dokładnie taki sam jak w przypadku zadania szerszego. Przycisk pojawia się dopiero po akcji użytkownika z zewnątrz. Próbowałem już ukrywać cały aplet i chować. ustawiać "focus" na pokazywany obiekt i kilka innych. Pomysły mi się już skończyły. Pojęcia nie mam co robić.

0
        public void actionPerformed(ActionEvent e)
        {
                b2.setVisible(true);
                validate();
        }

Warto czytać dokumentacje:

public void validate()

Validates this container and all of its subcomponents.

The validate method is used to cause a container to lay out its subcomponents again. <b>It should be invoked when this container's subcomponents are modified (added to</b> or removed from the container, or layout-related information changed) after the container has been displayed.
0
bogdans napisał(a)
        public void actionPerformed(ActionEvent e)
        {
                b2.setVisible(true);
                validate();
        }

Warto czytać dokumentacje:

public void validate()

Validates this container and all of its subcomponents.

The validate method is used to cause a container to lay out its subcomponents again. <b>It should be invoked when this container's subcomponents are modified (added to</b> or removed from the container, or layout-related information changed) after the container has been displayed.

Dzięki serdeczne. Siedziałem, głowiłem się, przeglądałem podręczniki, papierzyska i poprzednie projekty i nic mi do głowy nie przychodziło. Troszkę zgłupiałem też, że narzucono mi AWT, zamiast Swing, którego używałem dotąd prawie zawsze. Pewnie i tak nie ma to znaczenia w odniesieniu do tej metody. Dzięki jeszcze raz.

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