java - 执行时打开多个 JFrame
问题描述
我有一个在 Java Swing 中实现 MPJ-Express 的任务,不幸的是它进展不顺利。执行代码时,我不断收到多个 JFrame。我使用了 OOP 概念。现在我只是使用一个简单的 JFrame 来显示一个按钮,当我单击该按钮时,它应该给我进程的等级和大小。
我已经尝试了一切,但一切都在从顺序编程到 OOP 的风向标中。我确实尝试过一件事,当排名为 0 时它显示 1 个 JFrame 但是当我单击按钮时,我每次只得到排名 0,我希望显示所有排名。
public class Main {
public static void main(String[] args) {
Gui gui = new Gui(args);
}
}
public class Process extends mpi.MPI {
public final int rank;
public final int size;
public Process(String[] args){
super.Init(args);
this.rank = COMM_WORLD.Rank();
this.size = COMM_WORLD.Size();
}
public void exec() {
System.out.println("Rank <" + rank + ">");
System.out.println("Size <" + size + ">");
}
public void processFinalize() throws Throwable {
super.finalize();
}
}
class Gui {
Process p;
public Gui(String[] args) {
p = new Process(args);
welcomeScreen();
}
private void welcomeScreen() {
// Create and set up a frame window
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("MPJ Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Set the panel to add buttons
JPanel panel = new JPanel();
BoxLayout boxlayout = new BoxLayout(panel, BoxLayout.X_AXIS);
panel.setLayout(boxlayout);
// Set border for the panel
panel.setBorder(new EmptyBorder(new Insets(150, 200, 150, 200)));
JButton jb1 = new JButton("Button 1");
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
System.out.println("Rank <" + p.rank + ">");
System.out.println("Size <" + p.size + ">");
}
});
panel.add(jb1);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
设进程数为 3
Rank:0
Size:3
Rank:2
Size:3
Rank:1
Size:3
Not:
Rank:0
Size:3
我希望显示所有等级。
解决方案
推荐阅读
- javascript - 强制网页在屏幕旋转时完全重新渲染
- node.js - res.cookie() 在 Nodejs/Angular 中不起作用
- c# - 创建一个按顺序运行任务的类
- swift - 无法为领域对象添加属性包装器
- php - wkhtmltopdf 使用 apache 用户执行时出错
- swift - 为什么单线程swift中存在内存冲突?
- c# - C#如何调用另一个类的方法
- python - Django 的命令行实用程序 | manage.py:找不到命令
- html - 在 jQuery 中检测 CSS 类的点击
- java - 如何使用 Javacode 将 SSL 证书链添加到 TrustStore jks 文件