问题是我迷失在我的代码中。首先,我的项目应该模拟商店队列。现在,我在获取数据的地方制作了我的摇摆界面。当按下模拟按钮时,我想开始模拟。诀窍是,我不确定如何在不创建新界面的情况下在字段中编写。
我的接口代码(我只留下了我认为重要的内容):
public class Interfata extends JFrame {
public void UpdateTextField(String name, int i)
{
switch(i){
case 0: this.txtField8.setText(name); break;
case 1: this.txtField9.setText(name); break;
case 2: this.txtField10.setText(name); break;
case 3: this.txtField11.setText(name); break;
case 4: this.txtField12.setText(name); break;
case 5: this.txtField7.setText(name); break;
default : this.txtField7.setText(name); break;
}
}
private Interfata() {
mybutton = new JButton("Simulate");
mybutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Magazin shop = new Magazin(toNumber(txtField6.getText()),
toNumber(txtField1.getText()), toNumber(txtField2
.getText()), toNumber(txtField3.getText()),
toNumber(txtField4.getText()), toNumber(txtField5
.getText()));
shop.simulation();
}
});
}
public static void main(String[] args) {
Interfata interfataMea = new Interfata();
interfataMea.setTitle("Shop Simulator");
interfataMea.setSize(1000, 700);
interfataMea.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
interfataMea.setVisible(true);
}
}
我在类Magazin中创建线程,其中我有模拟()方法:
public void simulation() {
for (int i = 0; i < nrClienti; i++) {
int aux = shortestQueue(cozi);
Client c = generateClient();
new Threads(cozi[aux], c, aux, avgWaitTime).start();
}
}
线程扩展线程,这是代码:
public class Threads extends Thread {
private Coada coada;
private Client c;
private int i, avgWaitTime;
public Threads(Coada q, Client c, int aux, int avgWaitTime) {
this.coada = q;
this.c = c;
this.i = aux;
this.avgWaitTime = avgWaitTime;
}
@Override
public void run() {
coada.enque(c);
int s = 0;
for (int i = 0; i < coada.getSize(); i++){
s = s + coada.getClient().getservTime();
}
avgWaitTime=avgWaitTime+s;
try {
sleep(s);
} catch (InterruptedException e) {
// waiting to finish service time
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() { public void run() {
intf.UpdateTextField(coada.toString(), i); } });
coada.deque();
SwingUtilities.invokeLater(new Runnable() { public void run() {
intf.UpdateTextField(coada.toString(), i); } });
}
}
它只需要在Queue中插入一个对象,在JTextField中显示Queue,删除一个对象并重新显示。我找到了调用稍后的示例,但它需要制作一个新的Interface intf。或者没有,我迷路了。请帮助。非常感谢您的时间!
P、 如果我有什么不清楚的地方,或者我忘了提什么,请告诉我。
诀窍是我不确定如何在不创建新界面的情况下在字段中编写。
问题是,当您创建文本字段以启动模拟时,您正在将文本字段的内容传递给Magazin。之后(即运行时),Magazin无法更新文本字段。相反,尝试将引用传递给Magazin存储在最终字段变量中的Interdata。然后可以在调用器中使用此变量来更新文本字段。还可以使用invokeAndWait获取字段中的文本。一般来说,如果暂时阻塞调用线程没有坏处,那么可以使用invokeAndWait来代替
invokeLater
。
问题内容: 似乎当我实例化12个Swing Worker线程时,前六个开始完成其任务,它完成,然后最后六个开始并完成。我要寻找的行为是所有12个线程同时开始工作并同时完成。 我有以下内容: myTask m将以25的增量从0-100递增进度条。我得到了奇怪的行为,前六个线程开始递增,以100结束,然后最后六个线程从0开始并递增并完成。 是否可以限制一个Swing Worker线程数量? 问题答案:
作为一名Java Swing新手,我在将用户界面逻辑与域逻辑分离时遇到了一些困难。 我有一个小的(琐碎的?)带有JFrame的Swing应用程序,其中包含JLabel、JTextField和JButton。按下JButton时,会弹出JFileChooser对话框。选择文件后,JTextField包含文件的绝对路径。到目前为止还没有什么引人注目的。我想完成的下一件事是将文件的绝对路径“注入”到一个
我正在使用Jmeter测试多个微服务。基本思想是在微服务环境中测试断路器。现在,我使用两个线程组,一个主从远程概念。一个线程组创建使用100次迭代和1000个线程,并对前端服务创建负载,前端服务向后端服务发送请求。另一组用100次迭代但只有一个线程探测后端服务。如果我没有错,第二个线程组比第一个线程组完成得更早。有可能同步这两个吗? 也许还有另一个问题。当我用遥控器缩放线程时,第二个线程组也会缩放
目前,我正在尝试使用SwingWorker构建Swing应用程序,以不断更新面板。 我想在这里完成的是从数据库加载数据,每个数据都将作为面板中的图标发布。图标的颜色基于严重程度字段的值。例如: 示例数据在这张图片中,我有12个对象_id A001的数据。doInBackground()方法中的函数将循环12次,并调用publish()函数在面板中显示图标。图标的颜色基于每个对象id的严重性字段的最
问题内容: 我知道我知道,到处已经有上百万个问题和答案。关于它的大量真正详尽的文章,几种示例。我已经花了几个小时阅读有关它的信息,但这并不能解决问题。我之所以这样问,是因为我仍然不安静地理解我需要做的事情,显然是因为我的代码仍然无法正常工作。我想到了Swing如何与EDT一起工作,并且如果要使用ServerSocket的accept()方法,我将需要为Swing启动一个新线程(我认为?)。当我按原
怎么画线段? 上一讲我们已经得到了咱们的画布和画笔,在发挥艺术家之魂前,还是要像小孩牙牙学语一样,我们也得从画一条线段开始。因为画线段是最简单的,最基础的。但是别小看了它。下面是我从度娘那里找到的一个由线条组成的图像。 是不是很有魔性? 言归正传。怎么画线条?和现实中画画差不多: 移动画笔,使画笔移动至绘画的开始处 确定第一笔的停止点 规划好之后,选择画笔(包括画笔的粗细和颜色等) 确定绘制 因为