Java JProgressBar在long方法期间
我在侦听器上有一个长方法,我想用JProgressBar类显示一个进度条Java JProgressBar在long方法期间,java,multithreading,swing,progress,event-dispatch-thread,Java,Multithreading,Swing,Progress,Event Dispatch Thread,我在侦听器上有一个长方法,我想用JProgressBar类显示一个进度条 btnEsegui.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { crypt(); } }); 我想知道是否正确,在哪里放置线程 SwingUtilities.invokeLa
btnEsegui.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
crypt();
}
});
我想知道是否正确,在哪里放置线程
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// PROGRESS BAR
framePBar = new JFrame("");
framePBar.setBounds(
MainConstants.infoWindowPos_X, MainConstants.infoWindowPos_Y,
MainConstants.infoWindowDim_X, MainConstants.infoWindowDim_Y);
pBarPanel = new JPanel();
pbar = new JProgressBar();
pbar.setMinimum(0);
pbar.setMaximum(100);
pbar.setIndeterminate(true);
pBarPanel.add(pbar);
framePBar.getContentPane().add(pBarPanel);
framePBar.setVisible(false);
}
});
您可能希望事件侦听器启动一个运行
crypt
的新线程。听起来你有一个耗时的任务-crypt()
方法调用-当你显示一个不确定的进度条时,它应该在后台线程中运行,因此SwingWorker
可能是最好的方法。1)为了更快地获得更好的帮助,发布一个(最小的完整可验证示例)或(简短、自包含、正确的示例)。2) 另请参见,不清楚代码是否使用了多个帧,但显示的帧仅包含进度条这一事实是一个警告标志。。