我开发了一个用于创建和提取存档的Java应用程序 - 比如WinRAR.您可以使用多线程同时创建多个归档.最近,我希望在每个创建时在新的JFrame中以JProgressBar的形式在存档创建期间添加信息状态.
但我的问题是在新的状态框架和创建存档的线程中生成信息.这就是我在存档线程中创建JFrame以更新当前进度条的原因.
但就像我可以在各种信息源和你的答案/评论中阅读它一样,它反对Java Swing和性能; 我无法在EDT的其他地方创建摆动对象.
但那么,我该如何解决我的问题呢?如何在存档的写入和状态JFrame(使用JProgressBar)之间建立通信?
编辑:
我实现了SwingWorker来管理我的应用程序中的GUI.现在已经完成了,我还有一个问题:
使用SwingWorker,如何使用状态框架按钮上的事件对后台任务执行操作?(示例:暂停压缩或停止压缩.)
java user-interface swing multithreading event-dispatch-thread
我想用Swing制作一个像Java一样的Firefox选项对话框.
我现在尝试将所有元素对齐在窗口的北边.我使用第一个元素制作它,但是下一个元素垂直填充房间并且没有对齐.
为此我正在使用GridBagLayout.
这是代码:
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.Border;
public class Background {
private Border headBorder = BorderFactory.createEmptyBorder(15, 8, 10, 8);
private GridBagConstraints headPaneConstrain;
private JPanel headPane;
public Background() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame dialog = new JFrame();
//headPane
dialog.add(headPane());
//2 elements
createSetting("test");
createSetting("test2");
//dialog settings
dialog.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
dialog.setSize(500,500);
dialog.setVisible(true);
}
});
}
private JPanel createSetting(String name) {
JPanel panel = new JPanel(); …Run Code Online (Sandbox Code Playgroud)