我正在使用下拉列表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内所有可用空间?
答案 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);
}
};