将JLabel添加到JMenuBar并使其占用所有可用空间

时间:2018-03-17 17:34:23

标签: java swing user-interface menu

我正在使用下拉列表JMenuBar处理应用程序。我已经决定要移除外框,因为我不喜欢它的样子。所以我在添加菜单后添加了最小化,最大化和退出按钮到JMenuBar:

//buttons
this.add(Box.createHorizontalGlue());

//turn into images later
minimize = new JButton(" - ");
maximize = new JButton(" [] ");
exit = new JButton(" x ");

this.add(minimize);
this.add(maximize);
this.add(exit);

现在要使JMenuBar可拖动我想在JMenuItems和这些按钮之间添加一个JLabel,但是我不知道如何让它在那里使用所有可用空间。只是像这样添加它不起作用:

//draglabel
dragLabel = new JLabel("hey");
dragLabel.setBackground(Color.RED);
dragLabel.setOpaque(true);
this.add(dragLabel);

如何最大化此JLabel以获取JMenuBar内所有可用空间?

1 个答案:

答案 0 :(得分:1)

使用JPanel而不是JLabel。默认情况下,它会延伸以填充所有可用空间。如果您坚持使用Jlabel,则必须对其进行扩展并覆盖getMaximumSize()方法,如下所示:

JLabel lblNewLabel = new JLabel("New label") {
// Maximum size should be larger than what the JMenuBar will ever be.
    @Override
    public Dimension getMaximumSize() {
        return new Dimension(Integer.MAX_VALUE, 1000);
    }
};