gpt4 book ai didi

java - 如何获得带有空 JLabel 的 JPanel 以占用 GridBagLayout 中的空间

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:39 24 4
gpt4 key购买 nike

我正在为学校的一个项目开发 GUI。我在 swing 中使用 GridBagLayout。

我想要一个标签指示输入(一种文件类型 @ x = 0, y = 0),然后是另一个标签(选择后的实际文件名 @ x = 1, y = 0),后跟文件选择器的浏览按钮 (@ x = 2, y = 0)。 (1,0) 处的标签最初是空白的,但是当标签不包含文本时,我希望文本将占据的区域占据一些空间。我还希望 (0,0) 处的标签和 (2,0) 处的按钮之间的空间保持不变。

为此,我尝试将标签放在面板上,然后尝试布局。但是我无法缝合以达到预期的效果。谁能提供一些建议? GridBagLayout 的接下来三行将以完全相同的方式布局。

这是 GUI 屏幕截图的链接。

The pic

    calibrationFileSelectionValueLabel = new JLabel("",Label.LEFT);
calibrationFileSelectionValueLabel.setName("calibrationFileSelection");
calibrationFileSelectionValueLabel.setMinimumSize(new Dimension(100,0));



calibrationFileSelectionValuePanel = new JPanel();
calibrationFileSelectionValuePanel.setBorder(BorderFactory.createEtchedBorder());
calibrationFileSelectionValuePanel.add(calibrationFileSelectionValueLabel);

c.gridx = 0;
c.gridy = 0;
c.fill = GridBagConstraints.NONE;

filesPanel.add(calibrationFileLabel,c);

c.gridy = 1;
filesPanel.add(frequencyFileLabel,c);

c.gridy = 2;
filesPanel.add(sampleFileLabel,c);

c.gridy = 3;
filesPanel.add(outputFileLabel,c);

c.gridx = 1;
c.gridy = 0;
c.fill = GridBagConstraints.BOTH;

// filesPanel.add(calibrationFileSelection,c);
filesPanel.add(calibrationFileSelectionValuePanel,c);

c.gridy = 1;
// filesPanel.add(frequencyFileSelection,c);
filesPanel.add(frequencyFileSelectionValueLabel,c);

c.gridy = 2;
// filesPanel.add(sampleFileSelection,c);
filesPanel.add(sampleFileSelectionValueLabel,c);

c.gridy = 3;
// filesPanel.add(outputFileSelection,c);
filesPanel.add(outputFileSelectionValueLabel,c);

c.gridx = 2;
c.gridy = 0;
c.fill = GridBagConstraints.NONE;
filesPanel.add(calibrationFileSelectionButton,c);

c.gridy = 1;
filesPanel.add(frequencyFileSelectionButton,c);

c.gridy = 2;
filesPanel.add(sampleFileSelectionButton,c);

c.gridy = 3;
filesPanel.add(createOutputFileButton,c);

panelForFilesPanelBorder = new JPanel();
panelForFilesPanelBorder.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(5,10,5,10), BorderFactory.createEtchedBorder()));
panelForFilesPanelBorder.add(filesPanel);

buttonsPanel = new JPanel();
buttonsPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
buttonsPanel.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(5,10,10,10), BorderFactory.createEtchedBorder()));
buttonsPanel.add(startButton);
buttonsPanel.add(stopButton);
basePanel.add(panelForFilesPanelBorder);
basePanel.add(numericInputPanel);
basePanel.add(buttonsPanel);

最佳答案

令人讨厌的是,没有文本的标签不会占用垂直空间。您可以在它为空时使用 "" 来解决这个问题。

JLabel fileNameLabel = new JLabel(" ");

关于java - 如何获得带有空 JLabel 的 JPanel 以占用 GridBagLayout 中的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19738402/

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