我正在尝试使用GridBagLayout创建一个带有Swing的布局。
我想在按钮旁边放置一个组合框,其中按钮的大小是恒定的,组合框将填充行中的所有可用空间:
但是,如果我放大窗口,组合框和按钮之间会出现空白:
如何布局此表单,使组合框填满所有空间,即使窗口已调整大小?
组件的布局代码(Scala):
layout(button) = new Constraints() {
gridx = 1
gridy = 0
anchor = GridBagPanel.Anchor.LineEnd
}
layout(comboBox) = new Constraints() {
gridx = 0
gridy = 0
fill = GridBagPanel.Fill.Horizontal
}
layout(centerPanel) = new Constraints() {
gridx = 0
gridy = 1
weighty = 1
weightx = 1
gridwidth = 2
fill = GridBagPanel.Fill.Both
}
对GUI的该部分使用边界布局。放置组合。在中心
和行\u端的按钮
。
像这样:
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.border.*;
public class StretchComboLayout {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
JPanel ui = new JPanel(new BorderLayout(2, 2));
ui.setBorder(new EmptyBorder(4, 4, 4, 4));
JPanel controls = new JPanel(new BorderLayout(2, 2));
ui.add(controls, BorderLayout.PAGE_START);
String s = new String(Character.toChars(8594));
String[] items = {"Choice: right " + s + " arrow"};
JComboBox cb = new JComboBox(items);
controls.add(cb, BorderLayout.CENTER);
controls.add(new JButton("Button"), BorderLayout.LINE_END);
JSplitPane sp = new JSplitPane(
JSplitPane.VERTICAL_SPLIT,
new JTextArea(4,40),
new JTextArea(4,40));
ui.add(sp, BorderLayout.CENTER);
JFrame f = new JFrame("Stretch Combo Layout");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setContentPane(ui);
f.pack();
f.setLocationByPlatform(true);
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
我有一个GridLayout(我以编程方式向其中添加子元素)。 结果很糟糕,因为GridLayout没有填满所有可用空间。 这就是结果: 这是我的XML:
在Swing应用程序中,我有一个使用GridBagLayout的面板。在这里,我有3列,其中一列中有一个JTextField。我想要的是设置这个JTextField的宽度(使用setPreferredSize()方法),以便它占用其列的所有可用空间。 据我所知,列的宽度是根据我使用GridBagConstraint分配给它们的权重计算的。我试图从面板的宽度中减去同一行其他组件的宽度之和,但这似乎不
我有一个包含以下列的表:id、col1、col2、col3、col4、col5、col6。 约束表示至少有3列被填充(所以最多3个NULs)。(列不按顺序填充,所以可以有col1、col2、col5被填充,col3、col4、col6是NULs) 如何确保当该列不为NULL时,它在此行的其他列中是唯一的?如何确保非空值的组合在所有行中都是唯一的? 我目前添加了以下约束(以确保至少3个非空):
我对荡秋千很陌生。我有一个基于外部输入动态生成UI的应用程序。在面板的顶部,有一个带有一些标题文本的JLabel,然后是一个按钮(告诉应用程序重新加载动态生成的内容),然后在下面是一个JScrollPane,其中包含所有动态生成的内容。我希望标签和按钮只占用所需的垂直空间,然后滚动窗格来填充所有剩余的可用空间。 我正在使用GridBagLayout,并在添加滚动窗格之前设置gbc.fill=BOT
问题内容: 我试图为javafx创建一个自定义组件,所以我让我的类扩展javafx.scene.control.Control并在构造函数上绘制其内容。 我的疑问是:如何使其“增长”以填充其父布局上的所有可用空间?就像当我放置一个TextArea时一样… 这是我正在做的精简示例: 在此示例中,TextArea将获得布局为其提供的所有空间。我希望我的组件也一样! 我已经尝试做的所有事情:-更改属性s
我正在手工编写一个自定义JPanel,称之为MyPanel,它包含两个jLabel和两个jTextBox。此JPanel将在JFrame中使用,JFrame包含使用CardLayout的其他JPanel。JFrame不可调整大小;它的大小基于组件最多的JPanel而固定。 由于MyPanel很少使用控件,因此我正在尝试找出使用的最佳布局管理器。我希望标签和文本字段显示在靠近顶部的位置,并在底部留有