动态更改JDialog的宽度

Ant*_*nto 2 java swing jlabel jdialog

我创建了一个包含JLabel的JDialog.因为基于用户输入而改变的文本长度可以包含大量字符,所以需要根据JDialog的长度大小动态地改变JDialog的长度.我尝试过pack()方法,但事实并非如此.谁能给我一些提示?提前致谢!

mKo*_*bel 6

  1. getPreferredSizeJLabel-基本上,你必须得到textLength来自JLabel像素,有3点是正确的方法,但是我爱:

    SwingUtilities.computeStringWidth(FontMetrics fm, String str)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在你能setPreferredSizeJLabel正确(请defalut是有需要增加+5 - +10到Integer返回SwingUtilities.computeStringWidth)

  3. 调用pack();顶级容器(the JDialog).

  • -1没有必要去解决所有这些问题.通过调用label.setText(...),组件将自动重新生成并重新绘制.首选大小会自动重新计算.所有必要的是setText()之后的pack(). (2认同)