gpt4 book ai didi

java - 为什么我的 JMenuBar 不显示?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:19:04 24 4
gpt4 key购买 nike

我正在尝试用 java 制作一个 GUI,但是 JMenuBar 已经让我苦恼了两天。有人可以告诉我为什么它没有显示吗?

import java.awt.*;
import javax.swing.*;
import javax.swing.JPanel;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.util.Arrays;
import javax.imageio.ImageIO;

public class selectionFrame extends JFrame
{
Font name;
Font title;

public void setup() //can't use constructer because this isn't given a size until after it is constructed.
{
//getContentPane().add(menuBar);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new FlowLayout());
//getContentPane().add(j);

setJMenuBar(createMenuBar());
//getContentPane().add(createMenuBar());
}

public JMenuBar createMenuBar()
{
JMenuBar menuBar;
JMenu m_file;
JMenuItem mi_save;
JMenuItem mi_load;

JMenu m_edit;
JMenuItem mi_tileHeight;
JMenuItem mi_tileWidth;

menuBar = new JMenuBar();
m_file = new JMenu("File");
m_edit = new JMenu("Edit");

mi_save = new JMenuItem("Save file", KeyEvent.VK_S);
mi_load = new JMenuItem("Load file", KeyEvent.VK_L);
mi_tileHeight = new JMenuItem("Set tile height", KeyEvent.VK_H);
mi_tileWidth = new JMenuItem("Set tile width", KeyEvent.VK_W);

menuBar.add(m_file);
m_file.add(mi_save);
m_file.add(mi_load);

menuBar.add(m_edit);
m_edit.add(mi_tileHeight);
m_edit.add(mi_tileWidth);

return menuBar;
}

public static void main(String[] args) //run
{
selectionFrame sel = new selectionFrame();
sel.setLocationRelativeTo(null);
sel.setSize((int) 400 + (sel.getInsets().left + sel.getInsets().right),(int) 400 + (sel.getInsets().top + sel.getInsets().bottom));

sel.setVisible(true);
sel.setTitle("Tiles/Meta");
sel.setResizable(false);
sel.setFocusable(true);
sel.getContentPane().setSize(sel.getSize());
sel.setLocation((int) sel.getX() - (sel.getWidth()/2),(int) sel.getY() - (sel.getHeight()/2));
sel.setup();
sel.repaint();

}
}

最佳答案

那里有很多额外的代码。

public class SelectionFrame extends JFrame
{
Font name;
Font title;

public SelectionFrame()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setJMenuBar(createMenuBar());
}

public JMenuBar createMenuBar()
{
JMenuBar menuBar;
JMenu m_file;
JMenuItem mi_save;
JMenuItem mi_load;

JMenu m_edit;
JMenuItem mi_tileHeight;
JMenuItem mi_tileWidth;

menuBar = new JMenuBar();
m_file = new JMenu("File");
m_edit = new JMenu("Edit");

mi_save = new JMenuItem("Save file", KeyEvent.VK_S);
mi_load = new JMenuItem("Load file", KeyEvent.VK_L);
mi_tileHeight = new JMenuItem("Set tile height",
KeyEvent.VK_H);
mi_tileWidth = new JMenuItem("Set tile width",
KeyEvent.VK_W);

menuBar.add(m_file);
m_file.add(mi_save);
m_file.add(mi_load);

menuBar.add(m_edit);
m_edit.add(mi_tileHeight);
m_edit.add(mi_tileWidth);

return menuBar;
}

public void main( String args[] )
{

SelectionFrame sel = new SelectionFrame();
sel.setLocationRelativeTo(null);
sel.setSize(400 + (sel.getInsets().left + > sel.getInsets().right), 400
+ (sel.getInsets().top + sel.getInsets().bottom));

sel.setTitle("Tiles/Meta");
sel.setResizable(false);
sel.setFocusable(true);

sel.getContentPane().add( new JLabel( "Content", SwingConstants.CENTER),
BorderLayout.CENTER );
sel.setLocation(sel.getX() - (sel.getWidth() / 2), sel.getY() - > (sel.getHeight() / 2));
sel.setVisible(true);

}
}

它会显示一个菜单栏和所有内容。如果您将内容添加到内容 Pane 的中心(默认情况下为边框布局),中心会自动填充整个内容区域,您无需调整任何内容。

这显示为一个带有菜单栏的窗口,一切正常。

您在什么平台上执行此操作?我在 Vista 上,我得到了我期望看到的东西。

关于java - 为什么我的 JMenuBar 不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/570785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com