问题标签 [miglayout]

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 回答
679 浏览

java - Java - 实现 mvc

我刚开始使用 MVC 模式做 Java Swing 应用程序,到目前为止,我发现它大大简化了我的工作并解决了很多问题。现在我有几个问题困扰我或现在不知道如何解决:

这是我的用户界面视图:

这是我的 UI 控制器

这是我的用户界面模型:

非常感谢您到目前为止:) 现在的问题:

  1. 我正在尝试将 JProgressBar 组件实现到我的视图中,我已经创建了它的一个实例,但我对实现它的正确方法有点困惑,因为随着元素被添加到 JList 组件中,消耗的部分超出了 JProgressBar 的最大总量将会被更新。

  2. 在项目开始时,我被告知要在我的视图中实现 Observable 类,在我的模型中实现 Observer。但是,我被告知要提供一些我当时没有的代码以供参考。好吧,现在我有一些代码,但是我看不出这个 Observer / Observable 实现如何在我的情况下帮助我,或者特别是我的 JProgressBar 问题。我能得到一些关于如何在这段代码中实现 O/O 来帮助我的建议吗?

  3. 由于我无法将 BorderFactory.createEmptyBorder 应用于 JLabel 以在我的 JPanel 上的标签之间设置间距,因此我使用“right.add(new JLabel(""), "wrap, span")" 在如何替换它之间创建垂直间隙。是否有预定义的方法可以设置 JPanel 元素之间的间隙,或者我是否需要参考布局管理器。

欢迎任何关于修复、更改或替换的提示我知道我在这里放了很多数据,但我正在努力正确地学习这一点,我没有其他地方可以参考。

0 投票
6 回答
8892 浏览

java - 在 Swing 中的组件顶部绘画?

我在 a 中JPanel添加了一个JViewport,并且该面板还添加了其他几个面板。我正在尝试实现拖动选择,您可以通过拖动鼠标选择多个组件。我面临的唯一问题是选择矩形被绘制在添加到 main 的组件后面JPanel。我怎样才能在它们上面画画?

我的结构如下:
JFrame-> ContentPane-> JLayeredPane-> JScrollPane-> JPanel-> JPanel []

大学作业的设计草案:
如您所见,矩形位于其他面板的后面。

大学作业的设计草案。

0 投票
2 回答
2050 浏览

java - 拦截或委托具有重叠组件的事件

我有两个JPanels大小相等的,一个在另一个之上。顶层用作拖动选择面板,另一层添加了其他组件。我的问题是这些添加的组件的鼠标事件处理程序没有被触发,因为它们是由覆盖面板处理的。我怎样才能仍然拖动这些添加的组件的顶部,但仍然拥有mouseEnteredmouseExited启用底层组件?

这是一个屏幕截图:

在此处输入图像描述

如您所见,选择矩形绘制在覆盖层上JPanel,但好像我的鼠标无法通过此面板查看下面的内容(寻找更好的解释方式)。

0 投票
1 回答
495 浏览

java - 使用 MigLayout 时,“add”的第三个 int 参数将如何影响布局?

例如:

0这种情况下,确实会影响组件的分层,但我似乎无法弄清楚具体如何。我想覆盖组件,但是因为 有第二个布局约束,所以MigLayout我不能像往常一样将分层和定位与JLayeredPane. 谢谢

0 投票
2 回答
1268 浏览

java - MigLayout 中的 JTextArea 导致 NullPointerException

我不是摇摆布局管理器的专业人士,这种行为完全让我感到困惑。本质上,我无法在没有得到 NullPointerException 的情况下将 JTextArea 或 JTextPane 添加到我的 MigLayout。

我创建了一个扩展 JPanel 的类:

这工作正常。但是,如果我尝试添加一个 textArea,它会在我尝试构建时引发异常:

我在 Eclipse 中使用窗口设计器,所以我假设有什么东西正在启动 MigLayout 构造函数?我一直在努力解决这个问题,我设法弄清楚的是添加 textArea 或 textPanes 会导致以下异常:

java.lang.NullPointerException at javax.swing.BoxLayout.preferredLayoutSize(Unknown Source) at java.awt.Container.preferredSize(Unknown Source) at java.awt.Container.getPreferredSize(Unknown Source) at javax.swing.JComponent.getPreferredSize( Unknown Source) at javax.swing.JRootPane$RootLayout.preferredLayoutSize(Unknown Source) at java.awt.Container.preferredSize(Unknown Source) at java.awt.Container.getPreferredSize(Unknown Source) at javax.swing.JComponent.getPreferredSize( Unknown Source) at java.awt.BorderLayout.preferredLayoutSize(Unknown Source) at java.awt.Container.preferredSize(Unknown Source) at java.awt.Container.getPreferredSize(Unknown Source) at net.miginfocom.swing.MigLayout.adjustWindowSize(未知来源)在 net.miginfocom.swing.MigLayout。layoutContainer(Unknown Source) at net.miginfocom.swing.MigLayout.preferredLayoutSize(Unknown Source) at java.awt.Container.preferredSize(Unknown Source) at java.awt.Container.getPreferredSize(Unknown Source) at javax.swing.JComponent。 getPreferredSize(Unknown Source) at javax.swing.BoxLayout.checkRequests(Unknown Source) at javax.swing.BoxLayout.layoutContainer(Unknown Source) at java.awt.Container.layout(Unknown Source) at java.awt.Container.doLayout( Unknown Source) at java.awt.Container.validateTree(Unknown Source) at java.awt.Container.validateTree(Unknown Source) at java.awt.Container.validateTree(Unknown Source) at java.awt.Container.validateTree(Unknown Source) ) 在 java.awt.Container.validate(Unknown Source) 在 java.awt.Window.show(Unknown Source) 在 java.awt.Component。show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at com.soartech.ssim.testbed.gui.TestbedApplication$1.run(TestbedApplication.java:25 ) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue$1.run( Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(未知来源)在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源)在 java.awt.EventDispatchThread。pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(未知来源)线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException 在 javax.swing.SizeRequirements.calculateTiledPositions(未知来源)在 javax.swing.BoxLayout.layoutContainer(未知来源)在 java.awt.Container.layout (Unknown Source) at java.awt.Container.doLayout(Unknown Source) at java.awt.Container.validateTree(Unknown Source) at java.awt.Container.validateTree(Unknown Source) at java.awt.Container.validateTree(Unknown源)在 java.awt.Container.validateTree(未知源)在 java.awt。Container.validate(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue。 access$000(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext $1.doIntersectionPrivilege(Unknown Source) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.awt.EventQueue$2.run(Unknown Source) at java.security .AccessController.doPrivileged(Native Method) 在 java.security.AccessControlContext$1。doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy( Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)java.awt.EventDispatchThread.run(Unknown Source) 处的 EventDispatchThread.pumpEvents(Unknown Source)java.awt.EventDispatchThread.run(Unknown Source) 处的 EventDispatchThread.pumpEvents(Unknown Source)

0 投票
1 回答
371 浏览

swing - 框架不显示使用 MigLayout 的面板

可能这是一个简单的错误,但我无法弄清楚出了什么问题。我有一个创建框架(MainFrame)并使用方法来更改面板的类。我有另一个类,其中描述了面板。但是,由于某种原因,我只能看到没有面板的框架。有人可以帮我吗?我是 MigLayout 的新手,如果您能解释我的错误,那就太好了。

我的面板类

谢谢!!

0 投票
1 回答
720 浏览

java - 强制缩小 JScrollPane 内的 MigLayout-Component

我有一个使用 MigLayout 作为其 LayoutManager 的组件。它设置为在 JScrollPane 内增长以占据整个可用宽度。因此,如果我调整应用程序框架的大小,JScrollPane 与框架一样宽,内部组件也是如此。

但是,当我缩小框架时,JScrollPane 内的增长组件只会保持其宽度而不缩小,因此会显示水平滚动条。

我知道JScrollpane 需要缩小它的宽度并使用 getScrollableTracksViewportWidth=true 实现 Scrollable-Interface 但 MigLayout 似乎并不尊重它。

有什么建议吗?谢谢

0 投票
2 回答
45621 浏览

java - Java垂直布局?

我需要将 JLabel 垂直放置在一些 JButton 上,就像游戏菜单一样。它们都应该居中。我已经下载了 MigLayout,但我不确定如何使用它,所以我只想要一种方法来垂直和居中放置我的组件,MigLayout 与否。另外,我不想使用 IDE GUI 设计器。

0 投票
1 回答
1150 浏览

java - 需要按钮留在我的对话框底部

我最初在 miglayout 论坛上发布了这个问题,经过 534 次浏览但没有答案,我决定在那里尝试一下;-)

我试图从 MigLayout 白皮书中扩展“初始示例”,以便添加一个始终位于对话框底部的“确定”按钮。

不幸的是,我发现的唯一解决方案是添加一个会增长的“假面板”:

我真的一点也不喜欢这种方法……但是有更好的方法吗?

(貌似我不能上传图片,但我想得到的用户界面在我的原始帖子中是可见的)

谢谢!

0 投票
1 回答
334 浏览

java - MigLayout 似乎覆盖了 setLocation - 如何避免这种情况?

使用JPanelusing MigLayout,当我在此面板内setLocation(x,y);拖动另一个时使用时JPanel,组件的位置将重置为绝对定位组件约束(添加组件时指定)。例如:

当我这样做时,它成功地更改了内容的 x/y 位置,但一旦外部(此)面板调整大小或验证,它就会再次重置。

我已经尝试了以下代码,但面板根本没有拖动:

我怎样才能解决这个问题? 谢谢。