Я пытаюсь создать приложение, которое показывает JProgressBar
только во время выполнения действий.Моя проблема в том, что когда программа открывается впервые, я устанавливаю JProgressBar
видимость на false
, затем на true
, когда выполняется действие, и после того, как оно выполнено, обратно на false
.Кажется, что это будет работать, и это работает, но только не тогда, когда я делаю его невидимым по умолчанию.Если видимость по умолчанию true
, то она работает хорошо, но это не совсем то, что я хочу.Как я мог сделать так, чтобы он не был виден, пока я не установил его как видимый?
SSCCE, только если мой вопрос не был достаточно ясен:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
public class SmileBack {
private JFrame frame;
private JPanel panel, container;
private JButton loadButton;
private JProgressBar progressBar;
public static void main(String[] arguments) {
new SmileBack().constructFrame();
}
public void constructFrame() {
frame = new JFrame("RSTracker");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(getContentPane());
frame.pack();
frame.setVisible(true);
}
public JPanel getContentPane() {
panel = new JPanel(new BorderLayout());
progressBar = new JProgressBar();
progressBar.setIndeterminate(true);
//progressBar.setVisible(false); // doesn't work when this is uncommented
loadButton = new JButton("Load memberlist");
loadButton.setEnabled(true);
loadButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
new Thread(new Runnable() {
@Override
public void run() {
progressBar.setVisible(true);
// do my stuff here...
try {
Thread.sleep(2000); // just for the sake of example
} catch (InterruptedException e) {
e.printStackTrace();
}
progressBar.setVisible(false);
}
}).start();
}
});
container = new JPanel(new FlowLayout());
container.add(loadButton);
container.add(progressBar);
panel.add(container);
return panel;
}
}
Игнорировать имяЯ слушал эту песню, создавая это.:)