相关疑难解决方法(0)

JTextArea附加问题

我正在制作一个备份程序,我希望我在JTextArea上显示备份程序的所有内容.好吧,它工作,但只有在程序完成备份后.我该如何解决?我运行的代码在这里:

备份方法

public void startBackup() throws Exception {
    // txtarea is the JTextArea
    Panel.txtArea.append("Starting Backup...\n");

    for (int i = 0; i < al.size(); i++) {
        //al is an ArrayList that holds all of the backup assignments selected
        // from the JFileChooser

        File file = new File((String) al.get(i));
        File directory = new File(dir);

        CopyFolder.copyFolder(file, directory);
            }
     }
Run Code Online (Sandbox Code Playgroud)

复制文件夹类:

public class CopyFolder {
public static void copyFolder(File src, File dest) throws IOException {

    if (src.isDirectory()) {

        // if directory not exists, create …
Run Code Online (Sandbox Code Playgroud)

java swing multithreading swingworker jtextarea

3
推荐指数
1
解决办法
3019
查看次数

java中的GUI线程

我正在尝试用Java编写一个简单的游戏.的基本结构是一个单一的JFrame具有不同JPanels的是我添加/在不同的时间取出.在启动时,有JPanel一个基本菜单(开始游戏,高分等).按下"开始"按钮后,它会切换到一个水平选择器面板,其中有三个按钮可选择游戏的难度级别.按下三个按钮中的任何一个后,它会切换到另一个面板,该面板将显示三秒倒计时,然后是实际游戏.所有三个按钮都调用相同的方法,只是传入了不同的难度值.

我有所有单独的部分工作正常,但我有从水平选择面板到倒计时的过渡的麻烦.如果我不使用线程,屏幕会在按下按钮时冻结,并且不会切换到新面板.我已经尝试过搞乱线程了,但是我对它们知之甚少,并且只取得了有限的成功(我已经得到它所以它会成功切换一些时间,但不是一贯的).

在代码方面,在级别选择面板中我有类似按钮点击的内容:

private class ButtonClickedListener implements ActionListener {
    public void actionPerformed(ActionEvent evt) {  
        gui.newLevel(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

代替gui.newLevel(1)我刚刚搞砸了开始新线程并从中调用方法.

newLevel()方法是这样的:

getContentPane().removeAll();

levelPanel = new LevelPanel(levelNum, this);
add(levelPanel);
validate();

levelPanel.start();
Run Code Online (Sandbox Code Playgroud)

从开始菜单切换JPanel到关卡选择器面板(再次使用ActionListener按钮)时,我使用非常相似的代码,这很好用.

LevelPanel的start()方法初始化new的值JPanelnewLevel()在显示实际游戏之前显示屏幕上的倒计时(当前使用以下代码,尽管我在方法中添加了类似的东西):

try {
    Thread.sleep(1000);
    //update countdown number
    validate();
    repaint();
    Thread.sleep(1000);
    //update countdown number
    validate();
    repaint();
    Thread.sleep(1000);
    //update countdown number
    validate();
    repaint();
} catch (Exception e) {
    System.out.println(e);
}

//start game
Run Code Online (Sandbox Code Playgroud)

我真的很感激任何帮助使这个代码工作,我很确定某种线程是要走的路,但我不太确定在哪里/如何.任何建议和/或代码示例都会很棒! …

java user-interface swing multithreading

0
推荐指数
2
解决办法
1157
查看次数