我想在这里将JMenubar放入此Bordlerlayout中。当我启动它时,它会在随机按钮处生成五个圆圈,我想添加一个带有动作监听器的菜单,以再次将圆圈随机放置。所以我想问问这种方式是否可行,或者有没有更简单的方法?
有谁知道为什么有时候我刚开始时只有四个圆圈而不是五个圆圈?

package test2;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class action extends JFrame {

/**
 *
 */
private static final long serialVersionUID = 1L;

public static void main(String[] args) {
    int size = 5;
    int[] randompoints = GetRandomPoints(size);
    action gt = new action(size, randompoints);
    gt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    gt.pack();
    gt.setVisible(true);
    }
private static int[] GetRandomPoints(int size) {
    int[] result = new int[size];
    for (int i = 0; i < size; i++) {
        int helper = (int) (Math.random() * (size * size) + 1);
        for (int x = 0; x <= i; x++) {
            if (helper == result[x]) {
                i--;
            }
        }
        result[i] = helper;
    }
    return result;
}

public action(int size, int[] randompoints) {
    Container pane = getContentPane();
    pane.setLayout(new GridLayout(size, size));
    for (int i = 0; i < size * size; i++) {
        JButton button = new JButton();
        button.setBackground(Color.WHITE);
        button.setName(Integer.toString(i));
        button.setPreferredSize(new Dimension(80, 80));
        for (int x = 0; x < randompoints.length; x++) {
            if (i == randompoints[x]) {
                button.setText("O");

            }
        }
        pane.add(button);
    }
 }

}enter code here

最佳答案

菜单栏是您放置在JFrameJDialog而不是布局中的东西。是用于窗口的东西,而不是用于窗口内部的东西。您可以使用弹出菜单,但最好使用按钮或类似的菜单。

我建议您阅读教程:How to Use Menus

10-01 12:28