首页 文章

setMinimumSize()不适用于JButton

提问于
浏览
1

以下代码描述了一个在JP轴中实例化的按钮,其中Page Axis中有一个BoxLayout:

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的大小更改为正确的大小,但按钮保持相同的大小 .

1 回答

  • 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);
        }
    }
    

相关问题