webForumDet fria alternativet

add(komp) vid händelse

4 svar · 514 visningar · startad av golding

goldingMedlem sedan okt. 200611 inlägg
#1

tjenare....

jag får inte javakoden att funka...

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class test extends JFrame implements ActionListener
{
	JPanel p = new JPanel();
	JButton b1 = new JButton("Klicka!");
	JButton b2 = new JButton("Ny knapp");
	
	public static void main(String[] arg)
	{
		test t = new test();
	}
	
	public test()
	{
		setLayout(new FlowLayout());
		
		b1.addActionListener(this);
		
		add(p);
		p.add(b1);
		
		setSize(300, 100);
		setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e)
	{
		p.add(b2);
	}
}

mvh... Sebastian

LimeMedlem sedan sep. 2001837 inlägg
#2

Exakt vad är det du inte får att funka??

Det du måste göra är att validera din JFrame när du lägger till något.

Lägg till raden:
this.validate();

sist i actionPerfomed-metoden.

goldingMedlem sedan okt. 200611 inlägg
#3

Lime skrev:

Exakt vad är det du inte får att funka??

Det du måste göra är att validera din JFrame när du lägger till något.

Lägg till raden:
this.validate();

sist i actionPerfomed-metoden.

Det funkade. tackar....

men varför måste man göra det?

PhorpherMedlem sedan feb. 20002 059 inlägg
#4

golding skrev:

Det funkade. tackar....

men varför måste man göra det?

Därför att validate ser till att containern (JFrame) gör en genomgång av vilka komponenter den har i sig och uppdaterar gränssnittet därefter.

goldingMedlem sedan okt. 200611 inlägg
#5

Tackar för det...

128 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
125 ms — hämta tråd, inlägg och bilagor (db)