【问题标题】:how get current label's width如何获取当前标签的宽度
【发布时间】:2015-11-22 20:49:59
【问题描述】:

有一个面板。我在该面板上添加了 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) 不要在没有正当理由的情况下将 Swing 和 AWT 组件混合在一起。在这种情况下,请改用JLabel。 2)该代码在“在屏幕上实现”之前检查标签的大小,并且在包装框架之前。在查询大小之前做这两件事。 3) “如何获取当前标签的宽度(?)” 你为什么要那个测量值?在开发 Swing GUI 的十多年中,我需要准确查询标签的大小(仔细计算)0 次。

标签: java swing width jlabel


【解决方案1】:

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

JLabel myLabel = new JLabel("ddddddddd");

输出:

63
0
63
63

【讨论】:

  • 嗯.. 我很惊讶从 Label 更改为 JLabel 修复了它!
猜你喜欢
  • 2019-06-28
  • 1970-01-01
  • 2020-06-04
  • 2016-10-31
  • 2020-03-04
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多