将JMenubar添加到Borderlayout中

时间:2018-02-28 14:51:24

标签: 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

1 个答案:

答案 0 :(得分:5)

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

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