获取JButton的默认边框

3

如何获取JButton的默认边框?

例如:

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

我能否不创建新按钮而完成它?

3
我认为没有人真正理解你的问题。 - Dan D.
我正在制作一个游戏,其中我有代表我的棋子的JButtons。当我单击其中一个时,我希望它的边框变为LineBorder,如果我再次单击它,我希望它恢复默认边框。我使用了getBorder()方法来解决这个问题,但是我更喜欢直接输入默认边框的类型。 - Zulatin
这听起来像是你需要使用 JToggleButton 而不是 JButton。 - Dan D.
我已经澄清了问题,现在应该可以回答了。 - johnchen902
1个回答

8
您可以从UIManager中检索默认边框:
UIManager.getBorder("Button.border");

例如:
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();
            }
        });
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接