有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

正在截断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) 个答案

  1. # 1 楼答案

    不要硬编码任何回转组件的宽度/高度值。每个组件都负责确定自己的尺寸,然后布局管理器可以在确定面板上每个组件的尺寸/位置时完成其工作

    What i want to do is to set values in Dimension() depending on the total width and total height of whatever the content will be of the widget

    您需要重写组件的getPreferredSize()方法。这是一个动态计算,可以在组件的属性发生更改时进行

    因此,随着内容的变化,首选大小也会发生变化。想想像JLabel这样的组件。随着文本的更改,其首选大小也会更改