以下代码描述了一个在JPAnel中使用BoxLayout在Page Axis中实例化的按钮:
private class AddInputSetButton extends JButton {
public AddInputSetButton() {
super("+");
setMinimumSize(new Dimension(100, 100));
pack();
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addInputGroup();
}
});
}
}
我尝试过setSize(),setPreferredSize()和setMinimumSize()无效,没有人调整按钮的大小。我仍然是Java GUI的新手,所以希望它很简单。
如何调整按钮的大小?
编辑:进一步检查后,setPreferredSize()会将包含按钮的JPanel的大小更改为正确的大小,但按钮的大小保持不变。
答案 0 :(得分:0)
JButtons
(和其他一些组件)在布局管理器中可能有点傻。布局管理器注意到您的按钮具有需要遵守的首选大小,因此它正在调整窗格以适应。但是你的JButton
很乐意这样做(它认为是正确的),除非你真的强迫它考虑它应该的尺寸。
如果你手动调整按钮大小(不一定推荐),我会说你应该设置所有三个属性(最小,最大和首选)。最大值是关键 - 它强制按钮考虑其他两种尺寸。
这是一个应该有用的简单示例。
import java.awt.Dimension;
import javax.swing.*;
public class ButtonSizes {
private static class AddInputSetButton extends JButton {
Dimension d;
public AddInputSetButton(int width, int height) {
super("+");
d = new Dimension(width, height);
setMinimumSize(d);
setMaximumSize(d);
setPreferredSize(d);
}
}
public static void main(String[] args) {
Box buttons = Box.createVerticalBox();
buttons.add(new AddInputSetButton(100,100));
buttons.add(new AddInputSetButton(200,200));
buttons.add(new AddInputSetButton(300,300));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(buttons);
frame.pack();
frame.setVisible(true);
}
}