gpt4 book ai didi

Java swing 方法 setLayout null 不起作用

转载 作者:行者123 更新时间:2023-12-01 12:07:57 29 4
gpt4 key购买 nike

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

class MenuPanel extends JPanel {
JButton setTextColor;
JSlider setMobNumber;
MenuPanel() {
setLayout(null);
setBackground(Color.LIGHT_GRAY);

setTextColor = new JButton("Change Text Color");
setMobNumber = new JSlider(1, 10);

setTextColor.setBounds(10, 40, 20, 10);
setMobNumber.setBounds(10, 80, 20, 10);

add(setTextColor);
add(setMobNumber);

setTextColor.setFocusable(false);
setMobNumber.setFocusable(false);
}
}

class GameBoard extends JFrame {
MenuPanel menuPanel = null;
GameBoard() {
setTitle("MyGame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());

menuPanel = new MenuPanel();
add(menuPanel, BorderLayout.WEST);

setSize(600, 500);
setVisible(true);
}
}

public class MyGame {
public static void main(String args[]) {
new GameBoard();
}
}

这是我的 Java 代码。我想在主机上制作菜单面板。所以我制作了上面的代码并附上主机代码上的“add(menuPanel)”。但我的菜单面板没有显示。我应该怎么办。我想这很难。但我不知道我做错了什么。

最佳答案

避免使用 null 布局,像素完美布局是现代 UI 设计中的一种幻觉。影响组件个体尺寸的因素太多,您无法控制其中任何一个。 Swing 的设计初衷是与布局管理器一起工作,放弃它们将导致无穷无尽的问题,您将花费越来越多的时间来尝试纠正

BorderLayout 依赖于您的 MenuPanel 首选大小来判断它可能需要的大小,此信息通常由布局管理器生成,但因为您已经将布局管理器设置为 null,它使用默认大小 0x0

简单的答案是使用适当的布局管理器,并允许底层 API 决定如何布局最佳组件,这会考虑到这些组件在不同环境下可能需要调整大小的差异。系统...

看看Laying Out Components Within a Container了解更多详情

关于Java swing 方法 setLayout null 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463348/

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