Search code examples
javaswingborderjbutton

Get default border of JButton


How can I get the default border of a JButton?

An example is:

Border border = new JButton().getBorder();

But can I do it without creating a new button?


Solution

  • You can retrieve the default border from UIManager:

    UIManager.getBorder("Button.border");
    

    For example:

    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
    
    public class TestButton {
        private static void createAndShowGUI() {
            JFrame frame = new JFrame("TestButton");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            JButton button = new JButton("Click");
            button.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
    
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    ((JButton)e.getSource()).setBorder(UIManager.getBorder("Button.border"));
                }
            });
    
            frame.add(button);
            frame.pack();
            frame.setLocationByPlatform(true);
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }