- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有两个表和两个按钮。我希望 table-1 位于第一列并且宽度为 3 个单位,然后我希望表格右侧的两个按钮更窄(宽度为 1 个单位),我希望按钮 1 位于顶部,按钮 2 位于底端。现在,在这些按钮的右侧,我希望另一个表(表 2)的宽度再次达到 3 个单位。为此,我使用了以下约束:
//table1
c = new GridBagConstraints(0, 0, 3, 2, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
c.fill = GridBagConstraints.BOTH;
outerPanel.add(all_app_scrollpane, c);
//button1
c = new GridBagConstraints(3, 0, 1, 1, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
outerPanel.add(addButton, c);
//button2
c = new GridBagConstraints(3, 1, 1, 1, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
outerPanel.add(removeButton, c);
//table2
c = new GridBagConstraints(4, 0, 3, 2, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
c.fill = GridBagConstraints.BOTH;
outerPanel.add(curr_app_scrollpane, c);
我们来看table1的GridBagCONstraints。据我所知,第一个参数声明它将从 0. 列开始,并且宽度为 3 列(第三个参数)。然后 button1 将从第三列开始,并且将是一列宽。但我想我知道有什么不对,因为结果与我预期的大不相同。
我希望这些按钮更窄,表格更宽。我怎样才能做到这一点?我想使用 GridBag 来完成这个,因为这个小面板只是一个非常复杂的 gui 的一小部分,而整个 gui 是使用 gridbag 设计的。所以我不想改变编码风格。
最佳答案
您必须设置布局的增长设置 (weightx),以便只有左列和右列增长。
像这样:
contentPane.setLayout(new GridBagLayout());
((GridBagLayout)contentPane.getLayout()).columnWidths = new int[] {0, 0, 0, 0};
((GridBagLayout)contentPane.getLayout()).rowHeights = new int[] {0, 0, 10, 0, 0, 0};
((GridBagLayout)contentPane.getLayout()).columnWeights = new double[] {1.0, 0.0, 1.0, 1.0E-4};
((GridBagLayout)contentPane.getLayout()).rowWeights = new double[] {1.0, 0.0, 0.0, 0.0, 1.0, 1.0E-4};
//---- leftBtn ----
leftBtn.setText("left Button");
contentPane.add(leftBtn, new GridBagConstraints(0, 0, 1, 5, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
//---- rightBtn ----
rightBtn.setText("right Button");
contentPane.add(rightBtn, new GridBagConstraints(2, 0, 1, 5, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
//---- addBtn ----
addBtn.setText("add Button");
contentPane.add(addBtn, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
//---- remBtn ----
remBtn.setText("rem Button");
contentPane.add(remBtn, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));
所以它给出了:
问候弗洛里安
编辑:这里是 IDE 的屏幕截图,按钮之间有额外的空间:
关于Java GridBag 布局无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11225511/
我正在尝试创建一个在列中带有标签的行列表。我正在尝试使用 gridbaglayout,但遇到了问题。当我展开窗口时,它不会展开。发生的情况是这样的: 我真正想要的是布局中的单元格占据 1/5 的空间,
我正在使用 java 和 swing 开发一款纸牌游戏,但遇到了一个恼人的问题。我有一个带有 miglayout 的游戏面板,似乎工作正常,但里面还有 7 个面板,上面有成堆的卡片,每个面板都有一个
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在编写一个游戏,但我的面板显示出现问题。似乎几乎是所有这些,所以我将选择一个特定的并剪切并粘贴所有相关代码。我正在尝试使用 gridbaglayout 和卡片布局。 import javax.sw
我有两个表和两个按钮。我希望 table-1 位于第一列并且宽度为 3 个单位,然后我希望表格右侧的两个按钮更窄(宽度为 1 个单位),我希望按钮 1 位于顶部,按钮 2 位于底端。现在,在这些按钮的
我正在对表单使用 GB 布局。目前有两行,每行由 6 个元素组成(第一行具有标签,第二行具有文本字段)。我的问题是应该在 X 5 Y 1 中显示的元素却在 X 6 Y 0 中显示。您能指出我所犯的错误
我正在尝试制作一个 gridbaglayout,只是将标签放在垂直窗口中 TextView 顶部的文本框顶部,但我遇到了异常 Exception in thread "main" java.lang.
我使用了网格袋约束,当我使用插图添加间距时效果很好,但是当我使用 gridx 和 gridy 设置位置时什么也没有发生。我刚刚发布了下面的完整代码,我不知道这是否有帮助,谢谢 import javax
this.getContentPanel().add(sortOrderScrollPane, new GridBagConstraints(0, 0, 5, 5, 0.0, 0.0, Gri
好的,我有一个面板,我想在上面放置两个面板,左和右,这样>右侧面板的宽度应是左侧面板宽度的两倍。 我想在左侧面板中添加一个菜单,所选项目的详细信息将显示在右侧面板中。 其次,当窗口展开时,面板及其组件
我使用扩展的 JFrame 类(称为 MFrame)来初始化扩展 JPanel 的两个对象。一个 JPanel 有按钮,称为 ButtonPanel,另一个 JPanel 具有通过读取 XML 文件生
我正在关注this教程并设置我的 GUI。我想要一个 textarea 应该占据整个宽度(所有列),但它没有发生,屏幕如下: 此青色字段应捕获整个屏幕的宽度。下面是我的代码: 代码 package c
我最近开始使用 Java,想知道是否可以在使用 GridBag 布局的同时制作动画。 这些是否可能以及如何实现?任何教程、帮助等将不胜感激:) 最佳答案 为了执行任何类型的这种性质的动画,您将需要某种
我是网格袋布局的新手。在进行测试时,我注意到当我添加组件时,我的网格包布局不会保留特定的大小(网格大小)。 我希望我的应用程序能够兼容各种屏幕尺寸,因此我无法提前对尺寸进行硬编码。 我可能做错了什么。
我有一个简单的网格包布局,当我仅使用文本字段时,它可以正常工作。当我放入 JSpinner 时,整个布局变得完全困惑。我的意思是我的三列中的两列完全消失,第二列,唯一出现的列,无论窗口大小如何,都会占
我想以编程方式获取已放置面板的网格包约束。我怎么做?? 最佳答案 GridBagLayout 有方法 public GridBagConstraints getConstraints(Componen
这是我的代码 public class HomeTopPanel extends JPanel { //BUTTONS private final JButton myAccountButton =
好的,所以我有 3 种方法来添加 2 个面板和 1 个按钮,同时它是 gridbag 约束。但是,当我在类的构造函数中调用 3 个方法时,它不会应用任何约束。 如果我将约束代码放在构造函数而不是方法调
我有一个 gridbag 布局,我在其中初始化 gbc.insets = Insets(0,0,0,);稍后我想在发生某些操作时调整此插图的大小。我尝试更改该值,然后执行 repaint() 但这不起
我正在使用 gridbag 布局来实现项目的灵活布局,但现在确实让我头疼了,,经过近 5 个小时的努力尝试,我无法根据我的要求进行正确的定位,,请帮我弄清楚:- public static void
我是一名优秀的程序员,十分优秀!