删除JButton矩形白色边框

时间:2013-04-22 15:13:02

标签: java swing windows-7 look-and-feel insets

有人知道如何删除JButton上的白色矩形边框吗?这个问题只适用于windows look&当按钮有点圆润时感觉到。

请在图片enter image description here上找到附带的示例。

将边框设置为空或null无济于事。保证金相同。

只有当我将按钮的不透明度设置为false时,白边/边框才会消失,但不幸的是,在这种情况下,整个按钮在某些版本的窗口上也是不透明的。

当我将opacity设置为false时,它看起来像: enter image description here

代码示例:

public class TestFrame extends javax.swing.JFrame {

/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {

            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (UnsupportedLookAndFeelException e) {
                e.printStackTrace();
            }

            TestFrame inst = new TestFrame();
            inst.setLocationRelativeTo(null);
            inst.setVisible(true);
        }
    });
}

public TestFrame() {

    this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    this.setLayout(null);
    this.getContentPane().setBackground(Color.BLACK);

    JButton button = new JButton();
    button.setBounds(10, 10, 100, 50);
    button.setBorder(BorderFactory.createEmptyBorder());    // not working
    button.setBorder(null);                                 // not working
    button.setMargin(new Insets(0,0,0,0));                  // not working

    add(button);
    pack();
    setSize(400, 300);
}

}

谢谢, Lubos

2 个答案:

答案 0 :(得分:0)

看起来像是一个绘画问题。您可以使用:

button.setBackground( Color.BLACK );

答案 1 :(得分:0)

编辑:请参阅以下评论。即使使用适当的布局,此样本仍会显示效果。设置背景颜色似乎显示不需要的边框。此效果不会显示金属。似乎Windows L& F显示圆形边缘,但按钮仍然是矩形。如果容器的BG颜色变为明显的颜色,如黑色,那么它们之间的空间只是显而易见的。

import java.awt.*;

import javax.swing.*;

public class TestFrame extends JFrame
{
  public static void main(String[] args)
  {
    SwingUtilities.invokeLater(new Runnable()
    {
      public void run()
      {
        try
        {
          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }

        TestFrame inst = new TestFrame();
        inst.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        inst.setLocationRelativeTo(null);
        inst.setVisible(true);
      }
    });
  }

  public TestFrame()
  {
    JButton button = new JButton("One");
    JButton button2 = new JButton("Two");

    JPanel p = new JPanel();
    p.setBackground(Color.BLACK);
    p.setLayout(new FlowLayout());
    p.add(button);
    p.add(button2);

    add(p);
    setSize(400, 300);
  }
}