gpt4 book ai didi

java - 使用 GridLayout 垂直对齐 jpanels 的组件

转载 作者:行者123 更新时间:2023-12-02 10:51:00 25 4
gpt4 key购买 nike

我正在使用 java swing 库将 KenKen 作为我的学期项目。为了对齐,我使用了 gridbag 和 gridlayout,但现在我想向 UI 中添加一个 JPanel 组件。这些屏幕截图将使问题更加清晰:

Before I click on the button in the lowest panel below

现在,我选择要在最左侧面板中添加相应候选项的网格单元。

This is what happens when I click the number buttons 2, 3, 4

它会扰乱网格和面板的相邻对齐。

以下是面板及其各自的布局:

 JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(1, 4, 5, 5));
buttonPanel.setPreferredSize(new Dimension(20,40));
buttonPanel.add(undoButton);
buttonPanel.add(redoButton);
buttonPanel.add(eraseButton);
buttonPanel.add(hintButton);

JPanel cellPanel = new JPanel();
cellPanel.setName("cellPanel");
cellPanel.setLayout(new GridLayout(pSize, pSize, 0, 0));

JPanel numPanel = new JPanel();
numPanel.setName("numPanel");
numPanel.setLayout(new GridLayout(1,1,5,5));
numPanel.setPreferredSize((new Dimension(50,60)));

JPanel candPanel = new JPanel();
candPanel.setName("candidatesPanel");
JLabel candidates = new JLabel("Candidates");
candidates.setFont(new Font("Courier New", Font.ITALIC, 14));
candidates.setForeground(Color.GRAY);
candPanel.setLayout(new GridLayout(0,1));
candPanel.add(candidates);

然后一切都进入内容面板:

 content.add(buttonPanel, pos.nextCol().expandW());
content.add(candPanel, pos.nextRow());
content.add(new Gap(GAP) , pos.nextRow()); // Add a gap below
content.add(cellPanel, pos.nextCol());
content.add(numPanel,pos.nextCol().expandW());

这些按钮都是在运行时生成的,并且它们被添加到 Action 监听器中的 candPanel 中。

最佳答案

您似乎正在使用我不知道的 GridBagConstraints 子类(变量 pos),尽管我可以从上下文中猜测它的功能。

假设您的问题是您希望 candidates 面板位于 cellPanel 的左侧,而不是其上方,则需要交换添加candPanelnew Gap(GAP) 如下:

content.add(buttonPanel, pos.nextCol().expandW());
content.add(new Gap(GAP), pos.nextRow()); // These two lines
content.add(candPanel, pos.nextRow()); // swapped over
content.add(cellPanel, pos.nextCol());
content.add(numPanel,pos.nextCol().expandW());

关于java - 使用 GridLayout 垂直对齐 jpanels 的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9862938/

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