簡體   English   中英

使用ActionListener和for循環將JLabel添加到JFrame

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM