问题标签 [null-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.
java - 要使面板与空布局管理器一起工作,您必须做些什么?
我在让空布局管理器工作时遇到问题,我发现这个很棒的页面包含使用空布局管理器时要记住的事情。其中之一是我的问题,我很快就继续前进。
我现在在使用空布局管理器的另一个面板上遇到了类似的问题。但是,我无法在任何地方找到此页面!那么是什么东西呢?
在问这个问题的过程中,我发现了我的问题。我仍然想将这些知识添加到该站点,因为我在任何地方都找不到这个问题。它可能对其他人有帮助。
澄清一下,由于拖动和动画的要求,我已经确定我需要为此面板使用空布局管理器。那不是问题。
java - 为什么我的新组件不显示在空布局管理器中?
JFrame
a 中有一个名为 a的面板,WatchPanel extends JPanel
它使用 aGroupLayout
并包含 a WatchListPanel extends JPanel
。使用WatchListPanel
anull
LayoutManager
并包含 的几个实例WatchItemPanel extends JPanel
。WatchItemPanel
用GridBagLayout
. _
当我加载框架并实例化 时WatchPanel
,我预加载了WatchListPanel
三个WatchItemPanel
带有数据的实例。这些工作正常。我的实现允许通过拖放(因此null
布局)对这些进行重新排序,并且效果也很好。上面WatchPanel
是一个添加新手表的按钮,它会弹出一个自己的新面板,JFrame
可以在其中添加手表。当在这个新面板上按下“保存”按钮时,它会将新手表添加到 ,它会WatchPanel
向下滴入WatchListPanel
并关闭JFrame
以添加新手表。
问题是当这个新WatchItemPanel
的被添加时,它不会被绘制,除非我调整JFrame
包含WatchPanel
. 我可以通过拖放与它进行交互。我什至可以拖动那个特定的面板——但它是空白的。我调整大小的那一刻WatchPanel
,它出现并正确绘制。
现在,我已经在列表中的每个实例上重写了调用setBounds
方法,但是我在添加它时已经调用了新方法。我已经尝试在每个可以想象的地方添加和调用,我想也许我错过了一些东西,但没有运气。我绝对已经在新面板上添加了,和,和。WatchListPanel
setSize
repaint
WatchItemPanel
setBounds
repaint
WatchItemPanel
repaint
invalidate
WatchItemPanel
WatchListPanel
setBounds
setVisible(true)
repaint
以下是 上的addWatch
和updatePositions
方法WatchListPanel
:
以下是有关的setBounds
方法WatchListPanel
:
这里的另一条信息 - 所有四个面板都在涂漆。我覆盖paintComponent
并WatchItemPanel
添加了一个System.out.println
并得到了这个结果:
面板中那个额外的“无效”列是什么?当我调整大小时WatchPanel
,“无效”消失了。不过,它看起来像一个额外的列。其他行没有相应的非无效值。JPanel.toString()
(这是删除了包名的默认输出。
java - 在具有绝对布局的框架中添加带有按钮、标签的 JTabbedPane ...
我有一个java代码。
和它的输出!
我想把这段代码改成这样。
我想使用绝对布局(null)。我想用这些标签添加菜单、按钮和标签......
我能怎么做??
java - JPanel.setSize() 不工作
查看这段代码的朋友不知道为什么我无法设置 JPanel 的大小...。
java - 需要绝对定位时空布局管理器的替代解决方案
几个月前,我阅读了这篇 Swing 教程http://zetcode.com/tutorials/javaswingtutorial/resizablecomponent/以了解如何在 Swing 中实现可调整大小的组件。
本教程讲述了使用 null LayoutManager 以便有可能绝对定位子组件。
在与另一个主题相关的讨论中,@Andrew Thompson 指出使用空布局是一个坏主意。这篇文章http://download.oracle.com/javase/tutorial/uiswing/layout/none.html也将空布局管理器描述为不可取的,无论如何它说在某些情况下可能有用。
在以下情况下:
- 我需要 JPanel 的子组件的绝对定位
- 我需要为子组件实现自己的边界框条件(以建立可能的重叠情况)
- 我需要 JPanel 的子组件可调整大小
在所描述的情况下使用空布局管理器是否正确?
或者还有其他更好的解决方案可以使用我的 JPanel 容器组件的布局管理器来实现该目标?
提前致谢
java - 为什么在使用 null LayoutManager 时我的带有 JTextArea 的 JScrollPane 不可见?
我试图在 JScrollPane 中显示一个 JTextArea,但是当我运行我的(简化的)程序时,我只是得到一个空框架:
我使用 null LayoutManager 与我正在教的教科书保持一致。
java - 如何在具有空布局的 JPanel 中添加 JTable?
我想添加JTable
到JPanel
谁的布局是null
. JPanel
包含其他组件。我必须JTable
在适当的位置添加。
java - 为什么不赞成在 Swing 中使用空布局?
最近,我开始为我工作的公司创建一个程序。正如背景信息一样,我仍然是一名学生和初学者程序员,所以我的解决方案可能不被推荐,我不知道该怎么做,但它有效,我不会因此而受到评判,因为这是一项与编程完全无关的学生工作。
该程序的问题是,它将在具有不同屏幕尺寸和分辨率(800x600 及以上)的多台不同计算机上运行。为了确保尽可能多地占用屏幕而不丢失程序的任何部分,我将布局设置为空,并使用相对值对所有内容进行硬编码。
该程序是信息亭式的,我首先获取屏幕尺寸值并从那里开始(例如,离开我的头顶,左侧菜单占屏幕的八分之一,顶部栏 2% 等) . 我还使用字体度量来确保组件大小正确,并且所有内容都可以很好地显示。
我的问题是:为什么让布局为空而不是使用布局管理器如此令人不悦?(我在一些论坛上被告知这是一种可怕的做事方式)我知道布局管理器是如何工作的并且知道如何使用不同的布局,但是对于这个程序的要求(多个不同的分辨率、自定义按钮形状和位置) ,更改语言时组件上的文本更改等),我看不到自己使用布局管理器来完成这一切。
在这种情况下,您更有经验的程序员如何使用布局管理器?当您希望按钮位于特定位置而其他组件与任何预定义布局都不匹配时,您会怎么做?
java - 在JLabel中的图像上单击鼠标时获取鼠标的X和Y位置
我使用 ImageIcon 功能在 JLabel 中显示了一个图像。
JLabel 包含在 JPanel 中。
单击图像时,我想获取鼠标相对于图像的位置。
我试图通过将鼠标侦听器添加到包含图像的 JLabel 来解决这个问题。
显然,即使我将JLabel的大小设置为图像的宽度和高度,似乎JLabel会自动拉伸到JPanel的大小。
因此,当下面的代码运行时,如果图像的大小小于 JPanel,则获取 X 和 Y 位置会返回不需要的值。
有没有一种方法可以专门限制 JLabel 的大小,以便获取鼠标的 X 位置和 Y 位置可以正常工作?
或者更好的方法来获得相对于图像的鼠标位置?(这会更好)
java - 适用于可调整大小组件的 LayoutManager
前段时间我读了这篇文章,它展示了一种在 Swing 中实现鼠标可调整大小组件的方法。
作者使用空的 LayoutManager 以允许绝对组件定位。我知道永远不应该使用空布局,所以我的问题是:
是否有任何已经实现的 LayoutManager 允许组件的绝对定位,或者我必须自己实现它?