gpt4 book ai didi

java - 同时运行 Frame 和循环?

转载 作者:行者123 更新时间:2023-12-01 22:42:38 24 4
gpt4 key购买 nike

我正在制作一个简单的小程序,用于向文本文件发送垃圾邮件。但我遇到了一个问题。我需要同时运行一个 while(true) 循环和一个框架。我也需要关闭框架。但我已经尝试过线程之类的东西,但我无法弄清楚它,而我正处于需要帮助的时刻。这就是我得到的

主要

    public static void main(String[] args) throws IOException {
Frame frame = new Frame();
}

public static void Spam(){
try{
while(true){
String userName = names[ran.nextInt(names.length)]+ran.nextInt(360);
String rawMessage = messages[ran.nextInt(names.length)]+ran.nextInt(360);

String message=userName+": "+rawMessage;

CustomWriter writer = new CustomWriter();
CustomWriter.Write(message);

System.out.println(message);

Thread.sleep(waitTime);
}
}catch(Exception err){}
}
}

框架

    public class Frame {
String file;
Frame()
{
final JFrame frame = new JFrame("SuperSpammer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,100);

Container contentPane = frame.getContentPane();
contentPane.setLayout(new FlowLayout());

//Now lets get the stuff
JButton bPickFile = new JButton("FILE");
JButton bStart = new JButton("START");

final JTextField tfWaitTime = new JTextField(5);
final JLabel lSpaming = new JLabel("SPAMING");
final JFileChooser fc = new JFileChooser();

frame.add(bPickFile);
frame.add(tfWaitTime);
frame.add(bStart);

frame.setVisible(true);

//ActionListners
bPickFile.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int returnVal = fc.showOpenDialog(fc);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = fc.getSelectedFile().toString();
}
}
});
bStart.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(file!=null){
frame.removeAll();
frame.add(lSpaming);
Main.Spam();
}
}
});
}
}

那么我如何同时运行循环和框架以便关闭框架?我做错了什么以及如何解决它?

最佳答案

Swing 是单线程环境,这意味着任何阻塞事件调度线程的行为都会阻止 UI 更新(或响应用户交互)。

看看Concurrency in Swing了解更多详情。

在这种情况下,您想要启动一个后台线程并在其中运行“垃圾邮件”循环。

还请记住,Swing 不是线程安全的,这意味着您永远不应该尝试与 EDT 之外的任何线程交互或修改任何 UI 组件。

关于java - 同时运行 Frame 和循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25901842/

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