[英]Using JTextFields, JButtons and JLabels on JFrame with ActionListener and if-else Statement Jbutton Does Not Work
[英]Adding JLabels to JFrame using ActionListener and for loop
我想使用for循環和ActionListener將JLabels添加到JFrame。 這個想法是:我有一個按鈕,當我單擊按鈕時,程序正在添加標簽,但是在我的代碼中,當我單擊按鈕時,沒有按鈕和ActionListener的情況下,標簽沒有正確添加。 碼:
public class Test extends JFrame implements ActionListener{
JLabel[] labels;
TextField dane;
JButton button;
public Test(){
super();
dane=new TextField();
button=new JButton("Oblicz");
setLayout(new GridLayout(33,0));
add(dane);
add(button);
setVisible(true);
pack();
}
@Override
public void actionPerformed(ActionEvent v) {
showGUI();
revalidate();
repaint();
}
private JLabel[] createLabels(){
JLabel[] labels=new JLabel[20];
for (int i=0;i<20;i++){
labels[i]=new JLabel("message"+i);
}
return labels;
}
private void showGUI(){
labels=createLabels();
for (int i=0;i<labels.length;i++){
this.add(labels[i]);
}
}
public static void main(String[] args){
new Test();
}
}
好的,我隨您的要求更改了代碼,但仍然無法正常工作。 怎么了 我不知道(我是一個初學者,所以每個建議都很好)
將組件添加到可見的GUI時,基本代碼為:
panel.add(...);
panel.revalidate(); // to invoke the layout managers
panel.repaint(); // to paint the new components
因此,在循環完成之后,將標簽添加到框架中,您需要revalidate()框架。
...但是在我的代碼中,當我單擊按鈕時沒有任何反應
我看不到您在按鈕上附加了一個偵聽器的位置。 嘗試:
button.addActionListener(this);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.