问题标签 [springlayout]
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.
java - Java Swing:管理多个 SpringLayout
我想管理一个复杂的容器结构作为 SpringLayouts 的组合(一系列独立的 SpringLayout 一个在另一个里面)
特别是,由包含 JPanel 的主 SpringLayout 管理的 JFrame:每个 JPanel 都应由其自己的 SpringLayout 管理。
不幸的是,如果我尝试应用两个不同的 SpringLayout,框架上不会出现任何内容
我制作了这个简单的代码来向您展示问题。代码包含:
- 一个 JFrame 和它的 SprilgLayout
- 一个 JPanel 及其 SpringLayout
- JPanel 中的一个简单的 JButton
这里的代码:
java - JEditorPane 文本换行是否不适用于 SpringLayout 或者我遗漏了什么?
我需要有选择地格式化段落的一部分,而 JEditorPane 是我能找到的唯一可以为我做这件事的东西。但是当我在编辑器窗格中有一条环绕的行并且在 SpringLayout 中它下方有一个元素绑定时,编辑器窗格不会显示其所有文本:它只显示与没有文本环绕的行一样多的行。如下面的示例所示,您放置在编辑器窗格下方的任何元素都具有正确的间距,如果文本被包裹,并且如果您仔细观察或尝试复制/粘贴内容,您会看到文本就在背景后面.
当你去调整它的大小时,事情真的很有趣。起初看起来调整窗口大小可以解决问题,但后来我注意到了一些事情。如果您一次更改一个像素的窗口大小,当文本换行到新行或停止换行到旧行时,编辑器窗格将保持其旧显示大小。它下面的元素移动到它应该在的位置,但是在您再次调整窗口大小之前,窗格不会正确打印。就像窗格正在重新绘制,然后查看是否需要调整大小的工作在之后完成,但从未显示。所以编辑器窗格总是会落后一步。
java - SpringLayout 是固定大小的布局管理器吗?
我知道以下 Java Swing 布局管理器:FlowLayout
、BoxLayout
、BorderLayout
、GridLayout
、GroupLayout
(我避免使用)和GridBagLayout
.
我称之为GridBagLayout
固定大小的布局管理器,因为它定义了固定大小的行和列。如果我希望我的所有面板都可以调整大小,我不会在响应式应用程序中使用它。我会尝试结合其他一些布局管理器。
出于好奇,我正在考虑采用新的布局管理器,SpringLayout
来进行应用程序改造。但是在浏览了文档之后,我的印象SpringLayout
也是一个固定大小的布局管理器。那么,是吗?它会损害我的应用程序的响应能力吗?
java - 如何使用 SpringLayout 相对于窗口大小放置对象
我正在使用 Swing 在 Kotlin 中对此进行编码,但我也可以使用 Java 处理任何答案。
我有一个带有使用 SpringLayout 布局管理器的面板的 JFrame。
我想把屏幕一分为二。我知道还有其他方法可以做到这一点,但我又创建了两个 JPanel。一个在顶部,一个在底部。
我知道如何将它们放在屏幕的顶部和底部,但我希望它们在我更改屏幕尺寸时留在那儿。目前我有这段代码。
screenSize 方法只返回 JFrame 的大小。它仅在该实例中获得大小,因此无论如何它对我不起作用。
我知道使用 Spring,例如,我可以使用 SpringLayout.VERTICAL_CENTER 将对象设置为始终位于屏幕的正中心。这意味着春天是能够随着屏幕尺寸的变化实时更新对象的位置。我想要一个更通用的版本,例如,我可以将bottomPanel的y位置设置为屏幕高度/ 2。这将在每次屏幕更改时更新面板的位置,类似于将位置设置为ScreenLayout.VERTICAL_CENTER确实,但向上移动。我还需要使用它来设置面板的大小,因为我希望它们每个都是屏幕宽度/2。我可以随时获取屏幕宽度,但是一旦我将底部面板的位置设置为它,它只会更新时刻,然后它只是继续使用该值。据我所知,Spring 没有屏幕宽度或高度的常量,因此我无法将其插入 putConstraint 方法。我需要一些其他的选择。我已经考虑过一个不断更新它的循环,但这对于这项任务来说效率极低。如果可能的话,我想直接使用 SpringLayout 功能来解决这个问题。
java - 使用 SpringUtilities 和 SpringLayout 无法将另一个组件(JPanel)添加到 JFrame
panel
代码派生自 oracle 文档(https://docs.oracle.com/javase/tutorial/uiswing/layout/spring.html)。我想在同一个框架中添加一个清除按钮,所以我创建了另一个面板:panel1
. 现在的情况是panel
and panel1
,代码只会显示其中一个面板。在运行代码时,我想要panel1
在panel
. 请告诉我如何实现它?和工作SpringLayout
得 SpringUtilities
很好。
java - SpringLayout没有填满整个页面
所以,正如标题所说,我希望我的 SplitPane 中的两个 ScrollPanes 填充 ButtonPanel 下的剩余空间。我已经尝试了其他几个 LayoutManager,但是在这些情况下,这个是“最好的”。
我在北部、东部、南部和西部设置了约束,所以我真的不明白为什么不尊重南部约束。
我也会使用一些其他 Layoutmanager,例如 BorderLayout,但这似乎也不起作用,因为 JScrollPane 在调整大小时会增长。
java - 如何使用SpringLayout垂直排列组件
显然我对 SpringLayout 有一些不明白的地方。我正在尝试创建一个类,即 JPanel 的扩展,它允许我添加组件并让它们垂直显示,宽度相同。
我对 JPanel 的扩展会将其 LayoutManager 设置为使用 SpringLayout,并且每次添加组件时,它都会放入 SpringLayout 约束以将其附加到第一个组件的面板,然后将每个组件附加到前一个组件。
首先,这是一个 Oracle 编写的使用 SpringLayout 的示例,我将其更改为垂直放置组件而不是水平放置:
根据我对 SpringLayout 要求的理解,我编写了以下内容:
这是一个测试它的小程序:
组件在面板顶部彼此重叠显示。我想设置每个约束,当我添加它时,将每个组件的北端连接到前一个组件的南边缘,将它们按照添加的顺序垂直排列。正如https://docs.oracle.com/javase/tutorial/uiswing/layout/springfinishedAdding()
上的“如何使用 SpringLayout”教程中所述,我有方法可以封装最后一个组件与其容器的连接。 html,并在我复制的演示程序中完成。
我不明白为什么我的组件相互重叠,但(两个)演示组件垂直相邻。我是否能够满足我最初的愿望,即让垂直组件在面板中拉伸成相同的大小?