使用ActionListener和for循环将JLabel添加到JFrame

时间:2014-04-16 19:35:11

标签: java swing user-interface jframe labels

我想使用for循环和ActionListener将JLabel添加到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();
}    
}

好的,我在你吮吸时更改了我的代码,但它仍然无法正常工作。这里有什么问题?我不知道(我非常初学,所以每个建议都很好)

2 个答案:

答案 0 :(得分:0)

将组件添加到可见GUI时,基本代码为:

panel.add(...);
panel.revalidate(); // to invoke the layout managers
panel.repaint(); // to paint the new components

所以在循环完成后将标签添加到框架中,需要重新验证()框架。

答案 1 :(得分:0)

  

...但在我的代码中,当我点击按钮时没有任何事情发生

我没有看到你将听众添加到按钮的位置。尝试:

button.addActionListener(this);
相关问题