gpt4 book ai didi

java - 在框布局中设置组件的自定义位置

转载 作者:行者123 更新时间:2023-11-30 07:30:23 25 4
gpt4 key购买 nike

我有一个框架,在这个框架内我有一个带有框布局的面板,在这个面板内我还有 4 个面板。

        mainFrame = new JFrame("Basket Game");
mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

mainPanel.add(options);
mainPanel.add(pname);
mainPanel.add(info);
mainPanel.add(gamearea);

mainFrame.setContentPane(mainPanel);
mainFrame.pack();
mainFrame.getContentPane().setBackground(Color.LIGHT_GRAY);
mainFrame.setResizable(false);
mainFrame.setVisible(true);
mainFrame.setSize(600,600);

表格如下所示:

form

前 3 个面板对我来说还可以。但对于最后一个面板(黑色面板),我想添加一些具有自定义坐标的组件。但是当我尝试使用自定义坐标添加它们时:

basket.setLocation(500, 500);
gamearea.add(basket);

它直接位于面板的顶部中心(坐标不影响它的位置)

second

当我将 gameareI 的布局设置为 null 时,我在面板上看不到我的标签。我想我应该为此做一些额外的事情。我怎样才能做到这一点?

最佳答案

问题不在于布局管理器 (null),也不在于遗漏了任何内容。问题只是 500x500 超出了游戏区域的范围。

public class NullLayout {

public static void main(String[] args) {
SwingUtilities.invokeLater(NullLayout::new);
}

NullLayout() {
JFrame frame = new JFrame("Basket Game");
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

for (int i = 0; i < 4; i++) {
JPanel strip = new JPanel();
strip.setMaximumSize(new Dimension(Integer.MAX_VALUE, 50));
strip.setBorder(BorderFactory.createTitledBorder("Strip " + i));
strip.add(new JLabel("Strip " + i));
mainPanel.add(strip);
}

JPanel gamearea = new JPanel();
gamearea.setLayout(null);
mainPanel.add(gamearea);

for (int i = 0; i < 5; i++) {
int x = i * 100, y = i * 100;
JPanel basket = new JPanel();
basket.setSize(200, 50);
basket.setLocation(x, y);
basket.setBackground(Color.YELLOW);
basket.add(new JLabel("x = " + x + ", y = " + y));
gamearea.add(basket);
}

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(mainPanel);
frame.pack();
frame.setResizable(false);
frame.setSize(600, 600);

frame.setVisible(true);
}
}

Basket showing (0,0), to (300,300), but not (400,400)

请注意,400,400 处的篮子未显示;它将位于游戏区域的底部之外。

关于java - 在框布局中设置组件的自定义位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36227097/

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