gpt4 book ai didi

java - 如何将 JButton 拉伸(stretch)到 JPanel 的整个高度

转载 作者:行者123 更新时间:2023-12-02 01:32:05 25 4
gpt4 key购买 nike

总结一下我的问题,我正在为 Java 应用程序开发一个接口(interface)。我遇到了一个以前没有遇到过的问题。为了创建一种“导航栏”,我在 JFrame 顶部创建了一个薄 JPanel。然后我想向其中添加一个 JButton 来表示“主页”按钮,该按钮将引导至应用程序的启动内容。当我这样做并使按钮的宽度和高度等于面板的高度时,按钮与面板顶部有一个大约 3 像素的小间隙。我不知道为什么,面板内没有其他元素。我没有使用任何布局,但是我尝试使用 FlowLayout 解决该问题,但没有真正改变。

这是界面的完整代码,我用红色标记了菜单面板仅用于测试目的。如何消除顶部的小间隙?

package UserInterface;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Interface {

private JFrame frame;
private JPanel menu;
private JPanel content;

public JButton home;

public Interface() {

Dimension dim = new Dimension(50, 50);

frame = new JFrame();
menu = new JPanel();
content = new JPanel();

frame.setSize(1600, 900);
menu.setSize(1600, 50);
content.setSize(1600, 850);

frame.setTitle("Tierland");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(
(int)((Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2) - (frame.getWidth() / 2)),
(int)((Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2) - (frame.getHeight() / 2))
);

frame.setSize(1600, 900);
menu.setSize(1600, 50);
content.setSize(1600, 850);

menu.setBackground(Color.RED);

home = new JButton();
home.setPreferredSize(dim);
home.setMinimumSize(dim);
home.setMaximumSize(dim);
home.setSize(dim);


frame.add(menu);
frame.add(content);

frame.setVisible(true);
menu.setVisible(true);
content.setVisible(true);

}

}

最佳答案

I am not using any layout,

是的,你是。默认情况下,JPanel 使用 FlowLayout。

however i have tried to fix that problem using a FlowLayout but nothing really changed.

这是因为默认的 FlowLayout 在添加到面板的任何组件周围使用 5 像素间隙。

您应该使用:

menu.setLayout( new FlowLayout(...) );

阅读 FlowLayout API 以获取适当的构造函数,该构造函数将允许您使用 0 来表示水平和/或垂直间隙。

frame.add(menu);
frame.add(content);

此外,默认情况下,框架的内容 Pane 使用 BorderLayout,因此您应该使用:

frame.add(menu, BorderLayout.PAGE_START);
frame.add(content, BorderLayout.CENTER);

您不应该尝试控制按钮的大小:

//home.setPreferredSize(dim);
//home.setMinimumSize(dim);
//home.setMaximumSize(dim);

只需设置按钮的文本或向按钮添加图标,按钮就会确定其自己的首选大小。

此外,您确实应该将“菜单”面板称为“工具栏”面板。 Swing 已经支持菜单,并且有一种特殊的方法可以将菜单栏添加到框架中。阅读 Swing 教程中关于 How to Use Menus 的部分了解更多信息。

关于java - 如何将 JButton 拉伸(stretch)到 JPanel 的整个高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55884482/

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