如何获取当前标签的宽度

时间:2015-08-28 08:42:32

标签: java swing width jlabel

有一个小组。我在该面板上添加了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()。width"我收到了正确的结果,但不幸的是我现在手上还没有工作代码。

有人能解释为什么用" getPreferredSize()。width"我收到零,我怎样才能获得当前标签的宽度?

1 个答案:

答案 0 :(得分:3)

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

JLabel myLabel = new JLabel("ddddddddd");

输出:

63
0
63
63