相关疑难解决方法(0)

在多任务应用程序中管理GUI和EDT

我开发了一个用于创建和提取存档的Java应用程序 - 比如WinRAR.您可以使用多线程同时创建多个归档.最近,我希望在每个创建时在新的JFrame中以JProgressBar的形式在存档创建期间添加信息状态.

但我的问题是在新的状态框架和创建存档的线程中生成信息.这就是我在存档线程中创建JFrame以更新当前进度条的原因.

但就像我可以在各种信息源和你的答案/评论中阅读它一样,它反对Java Swing和性能; 我无法在EDT的其他地方创建摆动对象.

但那么,我该如何解决我的问题呢?如何在存档的写入和状态JFrame(使用JProgressBar)之间建立通信?


编辑:

我实现了SwingWorker来管理我的应用程序中的GUI.现在已经完成了,我还有一个问题:

使用SwingWorker,如何使用状态框架按钮上的事件对后台任务执行操作?(示例:暂停压缩或停止压缩.)

java user-interface swing multithreading event-dispatch-thread

3
推荐指数
2
解决办法
1255
查看次数

对齐所有gridbaglayout元素

我想用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)

java swing gridbaglayout

2
推荐指数
1
解决办法
1992
查看次数