gpt4 book ai didi

java - 使用 MenuBar 创建框架 - pack() 无法识别大小,菜单栏被截断

转载 作者:行者123 更新时间:2023-11-30 08:10:42 28 4
gpt4 key购买 nike

对于练习,我需要一个由 2 个按钮组成的框架,如果单击其中一个按钮,则会显示一些文本。我还需要添加一个菜单栏。这工作正常,它显示在框架中,但仅显示第一个菜单。正如我已经发现的,问题在于使用 pack() 方法,仅考虑按钮大小,而不考虑菜单栏的大小。由于按钮比菜单栏小,因此它会被切断。

import java.awt.*;


public class Example extends Frame{

private MenuBar menuBar;
private Menu program;
private Menu messageSettings;
private MenuItem itmClose;
private MenuItem

public Example() {
menuBar = new MenuBar();
program = new Menu("Programm");
messageSettings = new Menu("Nachrichtenverwaltung");

itmClose = new MenuItem("Schließen");
itmWelcome = new MenuItem("Willkommen");

setLayout(new BorderLayout());

menuBar.add(program);
menuBar.add(messageSettings);
program.add(itmClose);
messageSettings.add(itmWelcome);

setMenuBar(menuBar);
pack(); //this one doesn't show a window
//setSize(400,600); //this one shows a Window
setVisible(true);
}

public static void main(String args[]) {
Example wnd = new Example();
}

}

对于这个最小的示例,我只显示了菜单栏,对我来说,这段代码现在打开一个空窗口。如果我取消注释 setSize,我会看到整个菜单栏。

如果有人可以帮助我并使用 pack() 或其他不使用固定值的方法使其工作,我将非常高兴。我还必须在本类(class)中使用 AWT。

最佳答案

没有具有 preferred size组件 ,你的窗口是 content pane是空的。作为示例,我在下面添加了一个小的彩色Panel。作为练习,尝试删除任意大小并添加 Component,例如 LabelButton;尝试不同的 layout managers面板上。

image

import java.awt.*;

public class Example extends Frame {

private MenuBar menuBar = new MenuBar();
private Menu program = new Menu("Program");
private Menu message = new Menu("Nachrichtenverwaltung");
private MenuItem itmClose = new MenuItem("Schließen");
private MenuItem itmWelcome = new MenuItem("Willkommen");

public Example() {
menuBar.add(program);
menuBar.add(message);
program.add(itmClose);
message.add(itmWelcome);
setMenuBar(menuBar);
Panel panel = new Panel(){

@Override
public Dimension getPreferredSize() {
return new Dimension(320, 240);
}
};
panel.setBackground(Color.cyan.darker());
add(panel);
pack();
setVisible(true);
}

public static void main(String args[]) {
Example wnd = new Example();
}

}

请注意,上图所示的平台将 MenuBar 移动到用户期望的位置。

关于java - 使用 MenuBar 创建框架 - pack() 无法识别大小,菜单栏被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30424400/

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