gpt4 book ai didi

Java Swing 按钮卡住程序

转载 作者:行者123 更新时间:2023-12-01 21:22:33 25 4
gpt4 key购买 nike

我在 Swing 中编写了一个简单的应用程序,用于将文本写入文件。这是我的主要类(class):

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class WritingTextToFileApp {

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new MainFrame("Application");

frame.setSize(500, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});

}
}

这是另一个类:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame {

public MainFrame(String title) {
super(title);
//Set Layout Manager
setLayout(new BorderLayout());
//Create Swing Components
JTextArea textArea = new JTextArea();
JButton button = new JButton("Add");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
File file = new File("C:\\Users\\Vincent Wen\\Desktop\\Test.txt");
try (BufferedWriter br = new BufferedWriter(new FileWriter(file))) {
br.write(input);
br.newLine();
} catch (IOException ex) {
System.out.println("Unable to write to file:" + file.toString());
}
}

});
//Add Swing components to conent pane
Container c = getContentPane();
c.add(textArea, BorderLayout.CENTER);
c.add(button, BorderLayout.SOUTH);
}

}

每当我按下按钮时,程序就会卡住并且没有任何反应。代码有问题吗?我是 Swing 新手,因此我们将不胜感激。

最佳答案

Swing 在处理 GUI 输入和渲染的同一线程中同步运行操作。这意味着当您单击按钮时,它会等待操作监听器完成运行,然后再返回处理输入和绘制 GUI。在这种情况下,它会有效地阻止 GUI 运行,直到您在控制台中键入内容。

您可以使用SwingWorker异步运行它,以便它在运行操作时继续运行 GUI。

关于Java Swing 按钮卡住程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38904055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com