我想使用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();
}
}
好的,我在你吮吸时更改了我的代码,但它仍然无法正常工作。这里有什么问题?我不知道(我非常初学,所以每个建议都很好)
答案 0 :(得分:0)
将组件添加到可见GUI时,基本代码为:
panel.add(...);
panel.revalidate(); // to invoke the layout managers
panel.repaint(); // to paint the new components
所以在循环完成后将标签添加到框架中,需要重新验证()框架。
答案 1 :(得分:0)
...但在我的代码中,当我点击按钮时没有任何事情发生
我没有看到你将听众添加到按钮的位置。尝试:
button.addActionListener(this);