2015-08-28 42 views
0

有一個面板。我在該面板上添加了JLabel,並想知道該JLabel的大小。如何獲得當前標籤的寬度

下面是簡單的代碼:

import java.awt.Dimension; 
import java.awt.Label; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 


class MyPanel extends JPanel { 

    MyPanel() { 
     this.setPreferredSize(new Dimension(300, 300));   
     Label myLabel = new Label("ddddddddd"); 
     this.add(myLabel);   
     System.out.println(myLabel.getPreferredSize().width);   
     System.out.println(myLabel.getSize().width); 
     System.out.println(myLabel.getMinimumSize().width); 
     System.out.println(myLabel.getMaximumSize().width); 
    } 
} 


class MyFrame extends JFrame { 

    MyFrame() {   
     this.setTitle("Test"); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
     this.add(new MyPanel());     
     this.pack(); 
     this.setVisible(true); 
    } 
} 


public class Text { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 

       new MyFrame();     
      } 
     }); 
    } 
} 

結果不是我所期待的:

0.0 
0.0 
0.0 
32767.0 

在我使用 「的getPreferredSize()寬」 的一些其他PROGRAMM和我收到正確的結果但不幸的是我現在手上沒有工作代碼。

有人可以解釋爲什麼用「getPreferredSize()。寬度」我收到零,我怎麼能得到當前標籤的寬度?

+1

1)不要Swing和AWT組件一起無故混合。在這種情況下,請使用「JLabel」。 2)該代碼正在檢查標籤在「屏幕上實現」之前以及幀被打包之前的大小。在查詢尺寸之前先做這兩件事。 3)*「如何獲得當前標籤的寬度(?)」*您爲什麼要測量?在開發Swing GUI的十多年中,我需要準確地查詢標籤的大小(仔細計算)** 0次。** –

回答

3

使用java.swing.JLabel代替java.awt.Label

JLabel myLabel = new JLabel("ddddddddd"); 

OUTPUT:

63 
0 
63 
63 
+1

嗯..我很驚訝從「Label」更改爲「JLabel」它! –