java - 如何使用 MigLayout 控制面板的整体尺寸限制?

标签 java user-interface miglayout

我正在为一个项目测试 MigLayout,但我似乎无法弄清楚 MigLayout 控制正在布局的整个面板大小的方法。我正在调整 MigLayout whitepaper 中的示例.另外,我用 Python 编写并使用 Jython 而不是用 Java 编写。也就是说,这是我当前的代码。

layout = MigLayout("fillx",
                   # Column constraints
                   "[right]rel[grow,fill]",
                   # Row constraints
                   "[]10[]10[]")
panel = JPanel(layout)

panel.add(JLabel("Enter size:"),
          "")
panel.add(JTextField(""),
          "wrap, width 150:250")
panel.add(JLabel("Enter weight:"),
          "")
panel.add(JTextField(""),
          "wrap, width 150:250")
panel.add(JButton("Ok"),
          "span 2, align center, width 100:150")

面板然后进入 JFrame 进行显示。当我调整框架大小时,控件会很好地调整大小并遵守它们的最小尺寸。但是,框架上没有最小尺寸,似乎也没有任何方法可以达到面板的实际最小尺寸来为框架设置它。询问面板的最小尺寸会返回一个尺寸,当在框架上设置时(加上插图),会切断按钮和一半的文本字段。

我想要的是能够设置框架的最小尺寸(不是硬编码!),以便面板适合并且没有任何控件被切断。执行此操作的最佳方法是什么?

最佳答案

就个人而言,我不会过分强调最小尺寸,只要首选尺寸(在 pack() 之后得到的尺寸是合适的。如果出于某种原因用户想要将窗口缩小到它的组件被剪掉,然后让它们。也许他们只是想把你窗口的底部挡在外面,这样他们就可以同时看到显示器上剩下的东西和其他东西。

我认为任何窗口的真正最小尺寸是它的边框和标题栏以及标题文本和省略号的几个字符的空间的总和。如果用户想要比允许所有组件显示未剪辑的更小的东西,否则你要强制执行谁?

使用 Web 上可用的几种基于表格的布局管理器中的任何一种,例如 MIG Layout,您应该能够轻松获得所需的调整大小行为。

不要脸的自插:如果你觉得MIG Layout不好用,我的MatrixLayout是,我认为,更容易使用。但 MIG 布局更强大。我特意选择对 MatrixLayout 进行编码,以不阻止面板缩小到计算出的最小尺寸以下。

关于java - 如何使用 MigLayout 控制面板的整体尺寸限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1244946/

相关文章:

java - Jadclipse 无法在 Eclipse Kepler SR2 中工作

java - jni入门问题

java - Jacoco Maven 离线检测 - Tomcat

Java JTable动态填充

c++ - 如何使用 css 更改 QStackedWidget 中 QWidget 的背景颜色?

java - 二维平面上的重叠多边形

JAVA GUI按钮问题

java - 无法从 MigLayout 底部删除多余的行

java - JPanel 中使用 Miglayout 的多个 JTable

java - 在 Swing 中,布局具有不同高度的组件