gpt4 book ai didi

java - 确保 SpringLayout 不会缩小到一定大小以下

转载 作者:行者123 更新时间:2023-11-30 06:32:34 24 4
gpt4 key购买 nike

我正在尝试使用 SpringLayout 实现一个非常简单的 UI(部分原因是,与我在网上找到的大多数教程作者相反,与其他布局管理器相比,我的编码界面非常相似,并且部分原因是我想学习如何使用它)。用户界面基本上是这样的:

UI template

这一切都很好。如果我增加窗口大小,UI 会按照我想要的方式调整大小(将欢迎文本保持居中并扩展文本区域以填充所有新的可用空间)。但是,低于某个点(更具体地说,当窗口对于欢迎文本而言变得太窄时):

UI when shrunk

我希望窗口不允许进一步缩小,这样如果用户试图将窗口缩小到小于足以容纳组件的大小,它就会停止。我如何使用 SpringLayout 布局管理器完成此操作?

我知道我可以通过处理一些调整大小事件并检查是否达到最小尺寸,然后将尺寸设置为最小尺寸来做到这一点。但这需要我 a) 知道或知道如何计算窗口的最小尺寸,甚至在它呈现之前,b) 编写一堆事件处理代码只是为了让一些 UI 呈现正确,c) 编写一个一堆代码,我希望好的布局管理器能够处理这些事情;)

最佳答案

  1. 您可以覆盖TopLevelContainer

    MinimumSize
  2. 您已将 JTextArea 放入 JScrollPane

  3. 最简单的方法是混合 LayoutManagers(称为 NestedLayout),方法是将 GUI 拆分为多个部分(分隔的 JPanels,具有相同或不同的部分) LayoutManager),而不是为整个 Container< 实现一些最复杂的 LayoutManager(GridBagLayoutSpringLayout)/

  4. 一些 LayoutManagers 完全忽略 setXxxSize

  5. SpringLayout 不是我的 Java 菜

import java.awt.*;
import javax.swing.*;

public class MinSizeForContainer {

private JFrame frame = new JFrame("some frame title");

public MinSizeForContainer() {
JTextArea textArea = new JTextArea(15, 30);
JScrollPane scrollPane = new JScrollPane(textArea);

CustomJPanel fatherPanel = new CustomJPanel();
fatherPanel.setLayout(new SpringLayout());

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(fatherPanel, BorderLayout.CENTER);
frame.setLocation(20, 20);
frame.setMinimumSize(fatherPanel.getMinimumSize());
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
MinSizeForContainer Mpgp = new MinSizeForContainer();
}
});
}
}

class CustomJPanel extends JPanel {

private static final long serialVersionUID = 1L;

@Override
public Dimension getMinimumSize() {
return new Dimension(400, 400);
}
}

关于java - 确保 SpringLayout 不会缩小到一定大小以下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8719319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com