java - 使用MigLayout,如何让JPanel出现

标签 java jpanel miglayout

我有这个极其简单的代码(实际上是直接从 miglayout 白皮书复制的: http://www.miglayout.com/whitepaper.html )。我在最后添加了 panel.setVisible(true) 。问题是,无论有没有最后一行,都没有显示任何内容。

MigLayout layout = new MigLayout("fillx", "[right]rel[grow,fill]", "[]10[]");
JPanel panel = new JPanel(layout);

panel.add(new JLabel("Enter size:"),   "");
panel.add(new JTextField(""),          "wrap");
panel.add(new JLabel("Enter weight:"), "");
panel.add(new JTextField(""),          "");
panel.setVisible(true);

最佳答案

您需要将面板添加到 JFrame:

import java.awt.EventQueue;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JFrame;
import net.miginfocom.swing.MigLayout;

public class MigLayoutTest {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });    
    }

    private static void createAndShowGUI() {
        MigLayout layout = new MigLayout("fillx", "[right]rel[grow,fill]", "[]10[]");
        JPanel panel = new JPanel(layout);

        panel.add(new JLabel("Enter size:"),   "");
        panel.add(new JTextField(""),          "wrap");
        panel.add(new JLabel("Enter weight:"), "");
        panel.add(new JTextField(""),          "");
        //panel.setVisible(true);

        JFrame frame = new JFrame("MigLayoutTest");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(300,200));
        frame.setLayout(new BorderLayout());
        frame.add(panel, BorderLayout.CENTER);

        frame.pack();
        frame.setVisible(true);
    }
}

JPanel 不是顶级框架,但 JFrame、JDialog 和 JApplet 是。请参阅有关顶级容器的教程:http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html

关于java - 使用MigLayout,如何让JPanel出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219072/

相关文章:

java - 映射带有额外列的@ManyToMany 关联表

java - JPanel 中 JLabels 显示不正确

java - 如何从另一个类获取 ArrayList 以显示在 JComboBox 中?

java - MiGLayout 不会向下展开 JPanel

java - ColdFusion 和 JSoup - 找不到 addTags 方法错误

java - 我有一个 JApplet,它必须显示 3 个组件。 (2 个 JPanel 和 1 个 Paint 方法)

java - "Unable to determine the location of Tomcat"命令消息

java - 非静态方法问题

java - 阻止 MigLayout 为组件分配空间