2012-03-29 11 views
0

私はレイアウトがNullに設定されているguiを持っています.JButtonにはアイコンがあり、ボタンにテキストを追加するとボタンが歪んで表示されるため、JLabelsをJButtonの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; 
    } 
} 

これは私にとっては良い解決策ではありません。あなたには良い解決策がない場合にのみそれをしてください。

関連する問題