首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >其他类中的Java Swing GUI

其他类中的Java Swing GUI
EN

Stack Overflow用户
提问于 2018-07-29 06:21:35
回答 1查看 411关注 0票数 0

我目前正在用Java开发我的第一个Swing项目。我想把我的图形用户界面分成3个独立的类。我的主类TicTacToeGUI和另外两个类:MenuBarBoard

我的菜单有问题。我不知道怎么才能让它看得见。代码正在编译,但菜单未显示。

TicTacToeGUI:

package TicTacToee;

import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;

public class TicTacToeGUI {

    public TicTacToeGUI() {
        super();
        Board board = new Board();
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    TicTacToeGUI window = new TicTacToeGUI();
                    //window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

主板:

package TicTacToee;

import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;

public class Board {

    private JFrame frame;
    private JButton[][] board;

    public Board(){
        initializeBoard();
    }

    public void initializeBoard() {
        frame = new JFrame();
        frame.setTitle("Tic Tac Toe v0.1");
        frame.setBounds(100, 100, 600, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(new BorderLayout(0, 0));
        frame.setResizable(false);
        //Creating MENU
        MenuBar menuBar = new MenuBar();
        frame.setJMenuBar(menuBar);
        frame.setVisible(true);

        //JPanel panel = new JPanel();
        //panel.setBorder(new LineBorder(new Color(0, 0, 0), 2));
        //frame.getContentPane().add(panel, BorderLayout.CENTER);
        //panel.setLayout(new GridLayout(3, 3, 2, 2));


        //board = new JButton[3][3];
    }
}

MenuBar:

package TicTacToee;

import javax.swing.*;

public class MenuBar extends JMenuBar {

    private JMenuBar menuBar;
    private JMenu menu;
    private JMenuItem newGame;
    private JMenuItem quit;

    public MenuBar(){
        initializeMenuBar();
    }

    public void initializeMenuBar() {
        //Create menu Bar
        menuBar = new JMenuBar();

        menu = new JMenu("MENU");
        menuBar.add(menu);

        newGame = new JMenuItem();
        menu.add(newGame);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-29 06:42:04

您没有正确扩展JMenuBar。尝试如下所示:

public void initializeMenuBar(){

    menu = new JMenu("MENU");
    this.add(menu);

    newGame = new JMenuItem();
    menu.add(newGame);

}

或者也许

public void initializeMenuBar(){
    //Create menu Bar
    menuBar = new JMenuBar();

    menu = new JMenu("MENU");
    menuBar.add(menu);

    newGame = new JMenuItem();
    menu.add(newGame);

    this = menuBar;

}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51575689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档