2013-04-13 2 views
0

Jbutton을 확장하여 응용 프로그램에 대한 사용자 지정 단추를 만들었습니다. 원하는대로 그려야합니다. 그러나 어떤 이유로 든 생성자에서 setMargin()을 호출하더라도, 버튼은과 같이, 0 마진이 : 내 코드에서 잘못하고 있어요 뭔가사용자 JButton의 여백 - Java

enter image description here

있습니까? 표준 JButton에는 여백이 어떻게 있습니까?하지만 사용자 정의 단추는 어떻게 사용합니까?

내 버튼의 자바 코드 :

public class CToolbarButton extends JButton 
{ 
     private static final Dimension SIZE = new Dimension(48, 48); 

     private static final int MARGIN_VAL = 50; 
     private static final Insets MARGIN = new Insets(MARGIN_VAL, MARGIN_VAL, MARGIN_VAL, MARGIN_VAL); 

     private static final Color FILL_NORM = Color.GRAY; 
     private static final Color FILL_ACTIVE = new Color(FILL_NORM.getRed()-25, FILL_NORM.getGreen()-25, FILL_NORM.getBlue()-25); 

     private static final Color BORDER_NORM = Color.BLACK; 
     private static final Color BORDER_ACTIVE = Color.YELLOW; 

     public CToolbarButton() 
     { 
       super(); 
       setContentAreaFilled(false); 
       setFocusable(false); 
       setMargin(MARGIN); 
     } 

     @Override 
     public void paintComponent(Graphics g) 
     { 
       if (getModel().isArmed()) 
       { 
         g.setColor(FILL_ACTIVE); 
       } 
       else 
       { 
         g.setColor(FILL_NORM); 
       } 
       g.fillRect(0, 0, getWidth(), getHeight()); 
     } 

     @Override 
     public void paintBorder(Graphics g) 
     { 
       if (getModel().isArmed()) 
       { 
         g.setColor(BORDER_ACTIVE); 
       } 
       else 
       { 
         g.setColor(BORDER_NORM); 
       } 
       g.drawRect(0, 0, getWidth(), getHeight()); 
     } 

     @Override 
     public boolean contains(int x, int y) 
     { 
       return (x >= 0 && 
           x <= getWidth() && 
           y >= 0 && 
           y <= getHeight()); 
     } 

     @Override 
     public Dimension getPreferredSize() 
     { 
       return SIZE; 
     } 

     @Override 
     public Dimension getMinimumSize() 
     { 
       return SIZE; 
     } 

     @Override 
     public Dimension getMaximumSize() 
     { 
       return SIZE; 
     } 
} 
+0

* "Jbutton을 확장하여 응용 프로그램에 대한 사용자 지정 단추를 만들었습니다."* 왜? 스윙'JButton '을 능가하는 버튼의 특징은 무엇입니까? * "내가 원하는 방식으로 페인트 칠해야 겠지만 .."* 놀랄만 한 컬러가 있지만 '그러나'입니다. –

+0

내가 맞춤 페인트를하고 싶고 서브 클래스를 만들지 않고 어떻게해야할지 모르겠다. – rcplusplus

+0

어떤 종류의 사용자 정의 페인팅입니까? 구체적으로 말하십시오 .. –

답변

0

대신 버튼의 페인트 메소드를 오버라이드 (override)하는 노력, 난 그냥 단추 대신에 다른 모습을 시뮬레이션 이미지를 사용하겠습니다.