2012-03-29 42 views
0

所以我有一個gui,佈局被設置爲Null,並且我將JLabels放在JButton的頂部,因爲JButtons有圖標並向按鈕添加文本會使按鈕看起來扭曲,所以我使用的是JButton的JLabels ontop。每次當我測試鼠標時,鼠標移過JButton,JLabel就會消失。我該如何解決這個問題,所以JLabels總是出現在JButton之上。如何讓JLabel始終保持在JButton之上?

編輯:它扭曲了按鈕,因此圖標占據了大部分空間,按鈕標籤被按鈕的另一邊切斷。

+0

定義「扭曲」? – JTeagle 2012-03-29 06:50:57

+0

*「所以我有一個gui的佈局設置爲空,」*這是問題所在。 ***使用佈局!*** – 2012-03-29 07:32:33

回答

3

如果您使用的是JFrame,我認爲您必須是這樣,您可以將標籤添加到位於內容窗格頂部的JLayered窗格。

1

幾乎沒有任何情況需要使用空佈局。你只需要做一些練習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; 
    } 
} 

這不是我想的一個好的解決方案。只有在沒有更好的解決方案時纔會這樣做。

相關問題