正在截断java维度内容
因此,我在我们的项目中有一个现有的方法,它使用Dimension()
定义小部件的宽度和高度:
wProps.setBounds("Widget.frame.bounds", new Rectangle(WidgetStartPosition.getInstance().getStartPos(),new Dimension(getDefWidth(), getDefHeight())))
但是getDefWidth()
和getDefHeight()
都检索硬编码值
example: int height = 360; int width = 210;
public void setBounds(String key, Rectangle r)
{
if (key == null || "".equals(key) || r == null)
return;
try
{
JSONObject jObject = new JSONObject();
jObject.put(X, r.x);
jObject.put(Y, r.y);
jObject.put(WIDTH, r.width);
jObject.put(HEIGHT, r.height);
getLocalJSONObject().put(key, jObject);
}
catch (JSONException e)
{
e.printStackTrace();
}
}
因为我注意到新Dimension()
的宽度和高度都是硬编码的。然后,如果小部件内容的宽度大于新Dimension()
中定义的宽度,则内容将被截断和剪切。
我想做的是根据小部件内容的总宽度和总高度在Dimension()
中设置值,因为小部件的内容每天都在变化。可能吗
# 1 楼答案
不要硬编码任何回转组件的宽度/高度值。每个组件都负责确定自己的尺寸,然后布局管理器可以在确定面板上每个组件的尺寸/位置时完成其工作
您需要重写组件的
getPreferredSize()
方法。这是一个动态计算,可以在组件的属性发生更改时进行因此,随着内容的变化,首选大小也会发生变化。想想像JLabel这样的组件。随着文本的更改,其首选大小也会更改