首页 > 解决方案 > 执行时打开多个 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

我希望显示所有等级。

标签: javaswingnetbeansmpj-express

解决方案


推荐阅读