2016-06-07 1 views
0

내 개발 시스템에서국경 문제 JButton의

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.FlowLayout; 
import java.awt.Insets; 

import javax.swing.BorderFactory; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class Demo { 

private JFrame mainFrame; 

static public Color BGCOLOUR1 = new Color(240, 240, 240); 

public Demo() { 

    try { 
     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

    mainFrame = new JFrame("DEMO"); 
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    mainFrame.setBackground(BGCOLOUR1); 
    mainFrame.setSize(300, 300); 
    mainFrame.setLayout(new BorderLayout()); 


    JPanel smButtonContainer = new JPanel(); 
    smButtonContainer.setLayout(new FlowLayout()); 
    smButtonContainer.setOpaque(true); 
    smButtonContainer.setBackground(Color.WHITE); 
    smButtonContainer.setBorder(BorderFactory.createEmptyBorder(25, 10, 5, 0)); 

    ImageIcon emailLogo = new ImageIcon(getClass().getResource("/resources/email.png")); 
    JButton emailButton = new JButton(emailLogo); 
    emailButton.setBorder(null); 
    emailButton.setBorderPainted(false); 
    emailButton.setBackground(Color.WHITE); 
    emailButton.setMargin(new Insets(0, 0, 0, 0)); 

    smButtonContainer.add(emailButton); 

    mainFrame.add(smButtonContainer); 


} 

public static void main(String[] args) { 
    Demo demo = new Demo(); 
    demo.showUI(); 
} 

private void showUI() { 
    mainFrame.setVisible(true); 
} 

} 

아래와 같은 이미지 버튼을 만드는 오전에 이미지 아이콘을 배치 할 때 (페도라 23/KDE)이 잘 보이는 :

enter image description here

하지만를 Windows 7 컴퓨터에서 응용 프로그램을 실행하면 버튼 모양이 보입니다.

enter image description here

왜 이런 일이 발생합니까? & 어떻게 이런 일을 방지 할 수 있습니까?

편집 : 예를 업데이트했습니다. 점선 사각형에 포커스가 버튼을 표시하기 위해 그려진 Windows에서

emailButton.setFocusPainted(false); 

:

+0

같은 LAF를 사용하고 계십니까? – JoSSte

+0

더 나은 도움을 받으려면 [MCVE] 또는 [짧은 내용, 자체 포함, 올바른 예] (http://www.sscce.org/)를 게시하십시오. –

+0

예제를 업데이트했습니다. 리소스를 포함하는 방법을 잘 모릅니다. – Lieuwe

답변

1

은 또한 추가해야합니다.

+0

그건 내 문제를 해결해 줬어. 감사! – Lieuwe