2012-03-29 3 views
0

그래서 레이아웃이 null로 설정되어있는 GUI가 있습니다. JButton에 아이콘이 있고 버튼에 텍스트를 추가하면 버튼 모양이 왜곡되어 보이므로 JButtons의 JLabels ontop을 넣으므로 JButton의 JLabels ontop을 사용하고 있습니다. 테스트 할 때 마우스가 JButton을 넘을 때마다 JLabel이 사라집니다. JLabel이 JButton 위에 항상 표시되도록 수정하려면 어떻게해야합니까?JLabel을 항상 JButton 위에 두도록하려면 어떻게합니까?

편집 : 버튼이 왜곡되어 아이콘이 대부분의 공간을 차지하고 버튼의 반대편 가장자리로 버튼 라벨이 잘 리게됩니다.

+0

'왜곡'을 정의 하시겠습니까? – JTeagle

+0

* "레이아웃이 Null로 설정된 GUI가 있습니다."* 문제입니다. *** 레이아웃을 사용하십시오! *** –

답변

3

JFrame을 사용하는 경우 반드시 있어야한다고 가정하므로 콘텐츠 창 상단에있는 JLayered 창에 레이블을 추가 할 수 있습니다.

1

null 레이아웃을 사용해야하는 경우는 거의 없습니다. LayoutManagers

JLayeredPane으로 원하는 작업을 수행 할 수 있습니다. 좋아요 :

import javax.swing.JButton; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JLayeredPane; 

public class Test { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 

     frame.add(jLabelOnJButton()); 

     frame.setSize(300, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 

    private static JComponent jLabelOnJButton(){ 
     JLayeredPane layers = new JLayeredPane(); 

     JLabel label = new JLabel("label"); 
     JButton button = new JButton("button"); 

     label.setBounds(40, 20, 100, 50); 
     button.setBounds(20, 20, 150, 75); 

     layers.add(label, new Integer(2)); 
     layers.add(button, new Integer(1)); 

     return layers; 
    } 
} 

이것은 좋은 해결책이 아닙니다. 네가 더 좋은 해결책이 없다면 그렇게해라.