java - 使用 Java pack() 方法

标签 java swing layout-manager pack

我无法使 pack() 方法起作用。我尝试了几件事。我的代码现在看起来像这样:

第 1 类:

public static void main( String[] args )
    {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run()
        {
         JavaGui mygui = new JavaGui();
   //       mygui.setSize(1154, 753);
            mygui.setVisible(true);
            mygui.pack();

第 2 类:

public class JavaGui extends javax.swing.JFrame 
    {
    public JavaGui()
        {
        getContentPane().setLayout(null);
        ..
        getContentPane().add(panelLeft);
        ...
        getContentPane().add(panelRight);

我试过将 pack 方法放在所有地方,但这种添加 gui 元素的方法不起作用。任何建议为什么?我还尝试将所有内容添加到 JFrame 而不是 getContentPane(),但我也无法做到这一点。

最佳答案

  1. 不要将空布局与 pack() 一起使用。 pack 方法告诉布局管理器和组件以最佳方式调整自己的大小,如果您改为使用空布局,则 gui 有缩小到最小尺寸的风险,因为没有布局将它们放在一起。
  2. 在大多数情况下根本不要使用空布局。使用这些风险会导致您创建几乎不可能扩展、改进和调试的僵化 GUI。
  3. 不要使用 setSize(...)pack()。布局主要遵循组件的首选大小,而不是它们的大小。

相反:

  1. 使用嵌套 JPanel 的令人愉悦且合理的组合,每个嵌套 JPanel 使用自己的布局管理器。
  2. 让组件和布局管理器自行调整大小。
  3. 那么 pack 应该会有所帮助。
  4. 我执行的一般顺序是将所有组件添加到 GUI,然后调用 pack(),然后是 setLocationByPlatform(true)(我认为),然后 setVisible(true).

如需更好的帮助,请查看 Swing Layout Manager Tutorials .

以下是本网站上使用各种布局管理器的其他问题的几个示例:

关于java - 使用 Java pack() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25754454/

相关文章:

JavaBuilder 处理 CoreException

java - 如何让Java GUI应用程序监听Windows锁定屏幕和解锁屏幕事件?

java - AES 256 位加密

java - hibernate 4 和 joda-time

java - 试图让 JFormattedtextfield 改变......不工作

java - 添加 JScrollPane 时 JTextArea 消失

java - 让你的 JFrame 成为静态变量是不是很糟糕? ( java Swing )

Java:创建全局图形对象

java - 添加横向 Jpanel

java - GridLayout 抛出非法组件位置