问题标签 [layout-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
433 浏览

java - Swing:与上层布局管理器进行适当的布局管理器交互?

我正在尝试自定义 LayoutManager,但我不了解在本身具有上层布局管理器的组件中使用它的微妙之处。

在此处输入图像描述

下面是一个测试程序,它用一对 JPanel 制作两个框架。两个 JPanel 中的每一个都有一个细黑色边框,并使用我的 WeirdGridLayout 将其子组件强制为网格中的正方形,JPanel 的高度是根据宽度计算的。两个 JPanel 都位于另一个 JPanel 中,该 JPanel 具有使用 BorderLayout 的细红色边框。

在一帧中,具有 WeirdGridLayout 的 JPanel 排列为 EAST 和 WEST,另一个排列为 NORTH 和 SOUTH。

问题是,在北/南情况下,如果我更改框架的宽度/高度,则具有 WeirdGridLayout 的两个 JPanel 具有正确的大小,但不是正确的位置(它们要么有间隙,要么垂直重叠)。

在此处输入图像描述

在东/西的情况下,它最终是错误的。

在此处输入图像描述

我必须做些什么才能让我的布局管理器与外部布局管理器配合得很好?

0 投票
3 回答
1184 浏览

java - Swing:没有 MigLayout 的垂直堆叠组件

我终于得到了我想要的垂直堆叠组件的行为,这些组件具有随时间变化的首选高度。但我需要使用 MigLayout。

有没有办法在没有 MigLayout 的情况下做到这一点?(这是一个图书馆,我不想强​​制依赖,除非我必须)

这是我正在寻找的行为(我的测试程序实现了):

在此处输入图像描述

在垂直顺序中,有一个调整大小按钮、“空白空间”(嗯,一个标记为这样的 JLabel)、一个红色矩形和一个绿色正方形。调整大小按钮具有固定高度。红色方块的大小是随机的,可以在任意时间改变。绿色方块设置其首选高度以匹配其宽度,我想扩大其宽度以填充容器。空白空间水平和垂直扩展以填充容器中的剩余空间。

什么可以代替 MigLayout?

0 投票
2 回答
1553 浏览

java - JLabel.setVisible(false) 使其他组件的位置发生变化

我在我的 Swing 应用程序中遇到了重新布局问题我使用 GridBagLayout 将四个组件(两个 JLabels、一个 JTextField 和一个表格,每个占据一行)添加到面板中,对于某些逻辑,我需要使一个标签可见 true 或false 基于某些条件,但是当我调用 setVisible(false) 时,此标签下方的组件会出现一点,当我调用 setVisible(true) 时,它们会下降一点,这会使 GUI 闪烁。有没有什么方法可以让其他组件粘在面板上?谢谢。

0 投票
6 回答
3513 浏览

java - Java Swing:选择正确的 LayoutManager

我正在构建一个 PropertyPanel。目前我正在使用 aGridLayout来管理JLabels我可以指定值的及其对应的字段。但问题是GridLayout自动管理列的大小:它使它们具有相同的宽度。

这意味着当我有一个大值字段时,列会变大(这很好),但另一列(以及我的所有JLabels)也在变大。这是一个屏幕截图:

在此处输入图像描述     < 坏的

如您所见,该image属性具有巨大的价值,这使得两列都更大,并且我在JLabels 之后有很多空间。

所以,我正在寻找一个LayoutManager使每一列都尽可能大的方法。
我想要这样的布局(它是用 Gimp 编辑的):

在此处输入图像描述     < 好

谢谢

0 投票
5 回答
7107 浏览

java - 如何从上到下然后从左到右填充 GridLayout?

a 的默认行为GridLayout是逐行填充组件,从左到右。我想知道是否可以使用它使组件按列填充(从左到右)?谢谢。

0 投票
4 回答
1517 浏览

java - 不正确的 GridBagLayout 行为

当我调整 JFrame 的大小时,表格(或更具体地说是 scrollPane)会挤压成一个小矩形(保持不变,但高度更像 5-10 像素)。

我还注意到 JFrame 有一个特定的高度阈值,当 JFrame 的高度低于此阈值时,所有 GridBagLayouts 的行为都正确(例如,所有面板的正确宽度和高度)。当高度高于此阈值时,两个右侧面板都会获得额外的宽度,而当降低 JFrame 的高度时,rightTopPanel 比 rightBottomPanel 失去高度的速度要快得多。

当 rightTopPanel 获得最小高度(大约 5-10 像素)时,阈值似乎是点。

Helper.createGridBagConstraints 只是创建 GridBagConstraints 的辅助方法,具有许多“可选”参数。

编辑:这似乎是 JScrollPane 中的一个问题。如果我不添加它,剩余的面板会正确调整大小。

编辑2:因为,到目前为止,没有人明白我的问题是什么,这里是截图:http: //img155.imageshack.us/img155/8847/badgridbaglayout1.png

http://img17.imageshack.us/img17/8779/badgridbaglayout2.png

http://img28.imageshack.us/img28/9336/badgridbaglayout3.png

0 投票
2 回答
2040 浏览

java - 无法调整 JButton 的大小

我正在尝试向我的 JFrame 添加一个按钮。我无法将 JButton 分配给特定大小。

我试过了

无论我尝试什么,按钮总是加载全屏。

这是我的代码,我使用了一些方法,一个 make、一个 build 和一个 dostuff。

我的主要看起来像这样。

0 投票
4 回答
3463 浏览

java - 为什么不赞成在 Swing 中使用空布局?

最近,我开始为我工作的公司创建一个程序。正如背景信息一样,我仍然是一名学生和初学者程序员,所以我的解决方案可能不被推荐,我不知道该怎么做,但它有效,我不会因此而受到评判,因为这是一项与编程完全无关的学生工作。

该程序的问题是,它将在具有不同屏幕尺寸和分辨率(800x600 及以上)的多台不同计算机上运行。为了确保尽可能多地占用屏幕而不丢失程序的任何部分,我将布局设置为空,并使用相对值对所有内容进行硬编码。

该程序是信息亭式的,我首先获取屏幕尺寸值并从那里开始(例如,离开我的头顶,左侧菜单占屏幕的八分之一,顶部栏 2% 等) . 我还使用字体度量来确保组件大小正确,并且所有内容都可以很好地显示。

我的问题是:为什么让布局为空而不是使用布局管理器如此令人不悦?(我在一些论坛上被告知这是一种可怕的做事方式)我知道布局管理器是如何工作的并且知道如何使用不同的布局,但是对于这个程序的要求(多个不同的分辨率、自定义按钮形状和位置) ,更改语言时组件上的文本更改等),我看不到自己使用布局管理器来完成这一切。

在这种情况下,您更有经验的程序员如何使用布局管理器?当您希望按钮位于特定位置而其他组件与任何预定义布局都不匹配时,您会怎么做?

0 投票
2 回答
227 浏览

java - 比 Box 更高效的布局

我有一些非常古老的代码,它使用 aBox来列出一些信息。我像这样创建它:

非常(非常)经常,添加新项目并删除旧项目,例如:

然后

每当添加或删除某些东西时,我都必须重新粉刷,所以我打电话:

问题是,由于这种情况经常发生,它会阻塞 UI。我认为我需要一个更好的实现来提高效率。

我知道我可以在后台维护一个活动项目的列表,然后间歇性地更新实际的 UI(批量更新)但是......

有人可以提出更有效的替代方法吗?

0 投票
2 回答
175 浏览

java - 两个 JTable 相互重叠

作为我的第一个 GUI 应用程序的一部分,我想通过以下方式显示 2 个表:

http://i.stack.imgur.com/6mq0m.jpg

我不能那样打印两张桌子!到目前为止,这是我的代码: