调整JButton的大小

时间:2015-11-26 02:10:02

标签: java swing jbutton gridbaglayout dimensions

我想知道如何调整警报大小' alarmClockButton'在我的代码中,我尝试过setSize();和setPreferredSize();但他们都不工作。我正在使用GridBagLayout。有什么想法吗?

 public class MainMenu {

    // JFrame = the actual menu / frame.
    private JFrame frame;
    // JLabel = provides text instructions or information on a GUI —
    // display a single line of read-only text, an image or both text and an image.
    private JLabel background, logo;
    // JButton = button.
    private JButton alarmClockButton;

    // Constructor to create menu
    public MainMenu() {
        frame = new JFrame("Alarm Clock");
        alarmClockButton = new JButton("Timer");
        alarmClockButton.setPreferredSize(new Dimension(1000, 1000));
        // Add an event to clicking the button.
        alarmClockButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // TODO: CHANGE TO SOMETHING NICER
                JOptionPane.showMessageDialog(null, "This feature hasn't been implemented yet.", "We're sorry!",
                        JOptionPane.ERROR_MESSAGE);
            }
        });
        // Creating the background
        try {
            background = new JLabel(new ImageIcon(ImageIO.read(getClass()
                    .getResourceAsStream("/me/devy/alarm/clock/resources/background.jpg"))));
            logo = new JLabel(new ImageIcon(ImageIO.read(getClass()
            .getResourceAsStream("/me/devy/alarm/clock/resources/logo.png"))));
        } catch (IOException e) {
            e.printStackTrace();
        }
        background.setLayout(new GridBagLayout());
        frame.setContentPane(background);
        GridBagConstraints gbc = new GridBagConstraints();
        // Inset = spacing between each component
        gbc.insets = new Insets(15,15, 15, 15);
        // Positioning
        gbc.gridx = 0;
        gbc.gridy = 0;
        frame.add(logo, gbc);
        // Positioning
        // Keep x the same = aligned. On same x-coordinate (think math!)
        gbc.gridx = 0;
        // Y = 2 down
        gbc.gridy = 1;
        frame.add(alarmClockButton, gbc);
        frame.setVisible(true);
        frame.setSize(550, 200);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        alarmClockButton.setForeground(Color.RED);
    }

}

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以通过<MapContainer> <MyMap /> ... </MapContainer> 影响按钮的大小,例如......

使用GridBagConstraintsipadx添加到组件ipady

preferredSize

产生类似......

的东西

enter image description here

你也可以使用......

gbc.ipadx = 100;
gbc.ipady = 100;

它会改变组件占用的空间量以及组件在给定单元格内的填充方式......

Clock

注意:

由于您使用gbc.weightx = 1; gbc.weighty = 1; gbc.fill = GridBagConstraints.BOTH; 作为后台组件,因此您将受限于标签的首选大小,该大小仅通过JLabelicon属性计算,不会使用布局管理器来计算这些结果。