【问题标题】:Can't remove extra row from bottom of MigLayout无法从 MigLayout 底部删除多余的行
【发布时间】:2018-01-31 04:28:33
【问题描述】:

我正在 Eclipse Neon 上使用 Java 中的 MigLayout 构建 GUI。我的代码应该提供两行两列,间隔为 15,当窗口展开时它们会增长以填充框架。我不知道为什么,但是自动生成了第三行,我似乎无法摆脱。我已将布局硬编码为两行和两列,并尝试使用 swing 编辑器删除第三行。虽然删除按钮适用于第 0 行和第 1 行,删除它们及其内容,但它对最后一行没有任何作用。

下面是我的代码在讨厌的第三行运行的图片

Example

这是我的代码

public Master() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 440, 163);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(new MigLayout("", "[grow]15[grow]", "[grow]15[grow]"));

    btnDailyLog = new JButton("Daily Log");
    btnDailyLog.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
        }
    });
    contentPane.add(btnDailyLog,  "spany 2,grow");


    btnEmpReports = new JButton("Employee Reports");
    btnJobReports = new JButton("Job Reports");

    contentPane.add(btnEmpReports, "grow,wrap");
    contentPane.add(btnJobReports, "grow,wrap");


}

【问题讨论】:

    标签: java eclipse swing miglayout


    【解决方案1】:

    额外的行是由于contentPane.add(btnJobReports, "grow,wrap"); 中的wrap 指令删除wrap 以解决问题:

    contentPane.add(btnJobReports, "grow");

    例如:

    import java.awt.Dimension;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    import net.miginfocom.swing.MigLayout;
    
    public class Tester extends JPanel{
        public Tester(){
            super(new MigLayout("", "[grow]15[grow]", "[grow]15[grow]"));
    
            JButton btnDailyLog = new JButton("Daily Log");
            JButton btnEmpReports = new JButton("Employee Reports");
            JButton btnJobReports = new JButton("Job Reports");
    
            add(btnDailyLog,"spany 2,grow");
            add(btnEmpReports, "grow,wrap");
            add(btnJobReports, "grow");
        }
    
        @Override
        public Dimension getPreferredSize() {
            return new Dimension(440, 163);
        }
    
        private static void createAndShowGUI(){
            JFrame frame = new JFrame("Tester");
    
            Tester tester = new Tester();
            frame.add(tester);
    
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack();
            frame.setLocationByPlatform(true);
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }
    

    【讨论】:

    • 谢谢。我只是用力捂脸,以至于我的手从我的后脑勺伸出来。对于阅读本文的任何人,都会遇到同样的问题:这是正确的解决方案,因为“换行”的功能基本上与回车在文本文件中的功能相同,即创建一个新行。
    • @ChrisPhillips 欢迎您!我很高兴它有帮助:)
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2020-02-25
    • 2018-09-23
    相关资源
    最近更新 更多