我正在尝试编写自己的第一个Java应用程序,并且想在GUI中创建一个按钮。这是我要运行的程序。
如果我单击GUI中的现有按钮。我将添加一个ActionListener
,但我只想添加一个按钮。如果我在GUI中单击两个按钮。首先运行LoadProgress
,然后运行Hinzufügen
。如何解决该问题,以便仅在单击Hinzufügen
按钮时创建按钮。
private void pnlLeft(){
JProgressBar bar = new JProgressBar();
bar.setPreferredSize(new Dimension(0, 30));
getContentPane().add(BorderLayout.SOUTH, bar);
JPanel panel2 = new JPanel();
panel2.setLayout(new BoxLayout(panel2, BoxLayout.PAGE_AXIS));
JButton btnLoad = new JButton("LoadProgress");
JButton leftbutton = new JButton("Hinzufügen");
panel2.add(leftbutton);
panel2.add(Box.createVerticalGlue());
panel2.add(btnLoad);
getContentPane().add(BorderLayout.WEST, panel2);
leftbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if(arg0.getActionCommand().equals("Hinzufügen")) {
JButton test = new JButton("TEST");
panel2.add(test);
}
}
});
btnLoad.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new Thread() {
@Override
public void run() {
if(e.getActionCommand().equals("LoadProgress")) {
bar.setStringPainted(true);
for ( int f = 1; f <= 100; f++) {
try {
Thread.sleep((long) (Math.random() * 100));
}catch (InterruptedException ex){
ex.printStackTrace();
}
bar.setString("Lade Bestand..." + f + "%");
bar.setValue(f);
}
bar.setValue(0);
bar.setStringPainted(false);
}
}
}.start();
}});
};
答案 0 :(得分:0)
当您从可见的GUI中添加(或删除)组件时,基本代码为:
panel.add(...);
panel.revalidate(); // invokes layout manager
panel.repaint();
否则,组件的默认大小为(0,0),因此无需绘制任何内容。