将JMenubar添加到Borderlayout中

ves*_*ety 1 java eclipse swing

我想在这里要求将JMenubar放入这个Bordlerlayout.当我启动它时,它会随机按钮生成五个圆圈,我想添加一个带有动作滑块的菜单,以便再次随机放置圆圈.所以我想问一下这种方式是否可行,还是有更简单的方法?并且有人知道为什么有时候我开始时只有4个圆圈而不是5个圆圈?

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
Run Code Online (Sandbox Code Playgroud)

小智 5

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

我建议你阅读教程:如何使用菜单.

  • 特别是,在窗口中放置JMenuBar的正确方法是使用[setJMenuBar方法](https://docs.oracle.com/javase/9​​/docs/api/javax/swing/JFrame.html#setJMenuBar-javax .swing.JMenuBar-). (2认同)