- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试布置我的 JPanel
时,我看到了一些非常奇怪的结果。在添加最后一个 JTextField
subline
之前,一切正常:
当我添加它时,其上方的 JTextField
会向右移动,以便它从 subline
结束处开始:
这是创建此布局的代码:
public class Opspanel extends JPanel{
private static final long serialVersionUID = -6393281054430179953L;
public Opspanel() {
GridBagLayout layout = new GridBagLayout();
setLayout(layout);
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
constraints.anchor = GridBagConstraints.LINE_START;
add(new JLabel("Vendor ID"), constraints);
constraints.gridx = 1;
constraints.gridy = 0;
constraints.anchor = GridBagConstraints.LINE_START;
JTextField vendorid = new JTextField();
vendorid.setPreferredSize(new Dimension(100,20));
add(vendorid, constraints);
constraints.gridx = 0;
constraints.gridy = 1;
constraints.anchor = GridBagConstraints.LINE_START;
add(new JLabel("Email Date"), constraints);
constraints.gridx = 1;
constraints.gridy = 1;
constraints.anchor = GridBagConstraints.LINE_START;
JTextField emaildate = new JTextField();
emaildate.setPreferredSize(new Dimension(100,20));
add(emaildate, constraints);
constraints.gridx = 2;
constraints.gridy = 1;
constraints.anchor = GridBagConstraints.LINE_START;
add(new JLabel("Email Time"), constraints);
constraints.gridx = 3;
constraints.gridy = 1;
constraints.anchor = GridBagConstraints.LINE_START;
JTextField emailtime = new JTextField();
emailtime.setPreferredSize(new Dimension(100,20));
add(emailtime, constraints);
constraints.gridx = 0;
constraints.gridy = 2;
constraints.anchor = GridBagConstraints.LINE_START;
add(new JLabel("Subject Line"), constraints);
constraints.gridx = 1;
constraints.gridy = 2;
constraints.anchor = GridBagConstraints.LINE_START;
JTextField subline = new JTextField();
subline.setPreferredSize(new Dimension(500, 20));
add(subline, constraints);
}
}
我该如何解决这个问题?
最佳答案
根据the docs for GridBagLayout
,
Each
GridBagLayout
object maintains a dynamic, rectangular grid of cells, with each component occupying one or more cells, called its display area.
在您的代码中,网格有 3 行和 4 列。您告诉每个组件恰好占据一个单元格,位置由 gridx
和 gridy
指定。
您不喜欢其中一些“停止”或“开始”,这一事实表明您确实希望其中一些占据多个单元格。
你很幸运! GridBagLayout 可以做到这一点。您正在寻找GridBagLayout.gridwidth
:
<小时/>Specifies the number of cells in a row for the component's display area.
Use
REMAINDER
to specify that the component's display area will be fromgridx
to the last cell in the row. UseRELATIVE
to specify that the component's display area will be fromgridx
to the next to the last one in its row.
gridwidth
should be non-negative and the default value is 1.
在您的示例中,您将“主题行”文本字段放在第二列中 (gridx = 1
)。由于您将 gridwidth
保留为其默认值 1
,因此该文本字段无法与第三列或第四列重叠。因此,如果它增长,整个列也必须随之增长。
您可以通过让它覆盖多个网格单元来让它填充整个水平空间。 (如果您熟悉 Microsoft Excel 或 Microsoft Word 或类似程序中的表格,这就像“合并单元格”选项。)
要使其覆盖 3 列,从 gridx = 1
开始:
constraints.gridx = 1;
constraints.gridwidth = 3;
或者,使其覆盖从 gridx = 1
列到右侧的所有单元格:
constraints.gridx = 1;
constraints.gridwidth = GridBagLayout.REMAINDER;
在使用它添加另一个仅覆盖一列的组件之前,请不要忘记将 gridwidth
重置为 1!
关于java - 将组件添加到我的 GridBagLayout 会将其他组件移到最右侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415052/
我正在将第一个 GridBagLayout 设置为主 JPanel。在此面板中,还使用此布局添加了其他十个面板(外部约束)。子面板包含大量文本,应使用新布局和 innerConstraints 将其放
我的任务是使用 Swing 在 Java 中设计一个基本的 UI,但我无法完成它的布局。我想创建类似于 this 的东西但是我使用 GridBagLayout 的尝试导致了一些非常困惑的事情。谁能提供
我有以下代码 GridBagConstraints c = new GridBagConstraints(); c.gridx=0; c.gridy=0; c.gridwidt
我正面临 Java GridBagLayout 的问题。 运行以下代码: import java.awt.GridBagConstraints; import java.awt.GridBagLayo
我正在使用 GridBagLayout到(当前)显示两行。我知道这种布局对于这项任务来说太过分了,但我正在努力学习如何使用它。问题是我已将两个面板添加到两个单独的行中,并且内容周围存在巨大差距(请参见
我正在使用 swing 尝试制作一个垄断板。我试图将板上的属性/空间制作为单独的 JPanel,它们可以有自己的实现、信息等,但我在空间的形状方面遇到了一些问题。我正在使用 GridBagLayout
我正在开发我的第一个应用程序来练习布局管理器,我开始学习 GridBagLayout,我想创建一个带有 Logo 和登录框的登录窗口。 目前我的应用程序如下所示: (来源:gyazo.com) 我觉得
我正在开发的 UI 显示一个面板,让用户选择电影并播放。有播放、暂停等控件。 布局似乎是我想要的。该面板使用 GridBagLayout。第 2 行显示状态消息的文本区域,第 3 行显示带有按钮和进度
我有一个面板,用作卡片布局的一部分。该面板使用 GridBagLayout。我向其中添加了两个组件:填充设置为 BOTH 的 JTextArea 和填充设置为水平的 JTextField。它们只占据水
我的问题是当我不乱用 ipadx 和 ipady 时。我的按钮粘在一起,但当我摆弄 ipadx 和 ipady 时,我发现第三个按钮将一个单元格移开。为什么以及如何解决这个困惑?代码: public
我想缩短我的文本字段,这样它就不会延伸到我的 jframe 的末尾,所以它现在看起来是这样的: 如何控制文本字段的宽度,使其不会像我尝试过 setPreferedSize() 和 setSize()
尝试将我的 JTable 旁边的表单与 GridBagLayout 对齐,但我正在努力将我的组件放在面板顶部。我需要价格标签和字段位于商品标签和字段下方,但我无法将其从面板底部移动。 如果我使用 an
我正在使用 GridBagLayout 测试一个简单的表单,但遇到了一些对齐问题。我想在顶部“Item”行下方的行上放置两个小字段,但长文本字段导致其下方的小文本字段无法正确对齐。 这是它当前正在执行
是否可以有一个像这张图一样的GridBagLayout? (本例中为多列 4 行 + 一列 5 行) 计算器的GridBagLayout: 最佳答案 对于最后一列,创建一个使用 GridLayout
我正在尝试学习如何使用JAVA的GUI库Swing。我想做的是将 2 个磁盘图像排成一行,并将 3 个打印机图像放在它们下面的行中。每个磁盘镜像应位于两个打印机镜像的中间。我(不幸的是)正在使用 Gr
我有一个 JPanel ,其中 GridBagLayout 作为布局管理器,我正在尝试进行这种安排: 忽略边框的额外深蓝色空间。 我总共有 5 列和 3 行,所有组件都将 setPreferredSi
如何为 GridBagLayout 中的不同行设置不同的颜色? P.S:我无法根据客户要求在我的应用程序中使用 swing。 最佳答案 对于 AWT 也适用 setBackground(Color)
我在 GridBagLayout 中有一个 3 * 6 的 JButtons 数组。但由于每个按钮的文本长度可能有所不同,因此每列按钮的宽度略有不同。如何使它们具有相同的宽度? 这是代码: for (
请看下面的代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TestForm exte
我正在为一些按钮设置布局。我想在中间有 2 个按钮,在最后有一个。我有两个在中间,但最后一个在一边。如何将“后退”按钮设置在其他按钮下方。 (我对此进行了研究)。 public class Optio
我是一名优秀的程序员,十分优秀!