Java Swing焦点边框太小

问题描述 投票:1回答:1

首先,我非常困惑,关于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);

This is the button I'm talking about

我想强调与原始作者所做的相同的事情,我希望对焦点边框进行绘制,以使jButton.setFocusPainted(false);无法解决我的问题。是否有明显的原因导致焦点边框无法随按钮的大小缩放?

java swing border jbutton
1个回答
0
投票

首先,关于代码的一些观察:

  1. 变量名不应以大写字母开头。学习Java命名约定并遵循它们。该论坛突出显示了您的变量,就像它们是类名一样,这使得阅读代码变得困难。

  2. Swing旨在与布局管理器一起使用。不要使用setBounds()。阅读Swing教程中有关Layout Managers的部分,以获得更多信息和工作示例。

是否有明显的理由使焦点边框不随按钮的大小缩放?

是否有明显的原因应该是按钮的大小?

焦点边框设计为在文本周围绘制,以提供视觉提示。如果它缩放到按钮的大小,那么您将无法看到它,因为它会与边框融合在一起。

但是,每个LAF都可以选择如何进行。该LAF选择在文本/图标周围有边框。

© www.soinside.com 2019 - 2024. All rights reserved.