首先,我非常困惑,关于stackoverflow的这个问题没有答案-至少我没有找到答案。所以我想我的问题必须非常具体,尽管我不明白为什么。一年多以前,已经类似地问过这个问题here
该问题尚未回答,因为它太旧了,我会再次提出。我没有像原始问题中那样进行任何金属设计,我所要做的就是在面板内部创建一个简单的按钮(我使用eclipse设计应用程序),但是焦点边框仅环绕文本并且不随按钮的大小缩放,而仅随字体的大小缩放。
这是我的整个设计代码(从我刚开始时就不多了)
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1000, 500);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel MainPanel = new JPanel();
MainPanel.setFocusCycleRoot(true);
MainPanel.setBackground(Color.DARK_GRAY);
MainPanel.setBounds(0, 0, 995, 465);
contentPane.add(MainPanel);
MainPanel.setLayout(null);
JButton StartButton = new JButton("Launch Oasis");
StartButton.setBorder(new LineBorder(Color.BLACK));
StartButton.setBackground(new Color(169, 169, 169));
StartButton.setForeground(new Color(0, 128, 128));
StartButton.setBounds(397, 197, 200, 50);
StartButton.setFont(new Font("Times New Roman", Font.PLAIN, 30));
MainPanel.add(StartButton);
我想强调与原始作者所做的相同的事情,我希望对焦点边框进行绘制,以使jButton.setFocusPainted(false);
无法解决我的问题。是否有明显的原因导致焦点边框无法随按钮的大小缩放?
首先,关于代码的一些观察:
变量名不应以大写字母开头。学习Java命名约定并遵循它们。该论坛突出显示了您的变量,就像它们是类名一样,这使得阅读代码变得困难。
Swing旨在与布局管理器一起使用。不要使用setBounds()。阅读Swing教程中有关Layout Managers的部分,以获得更多信息和工作示例。
是否有明显的理由使焦点边框不随按钮的大小缩放?
是否有明显的原因应该是按钮的大小?
焦点边框设计为在文本周围绘制,以提供视觉提示。如果它缩放到按钮的大小,那么您将无法看到它,因为它会与边框融合在一起。
但是,每个LAF都可以选择如何进行。该LAF选择在文本/图标周围有边框。