首页 > 解决方案 > 代号:自定义组件没有得到正确的高度

问题描述

我试图在Codenameone中打印矩形

fun showCustomForm() {
    val hi = Form("", BorderLayout())
    hi.add(BorderLayout.CENTER, getGreenLine())
    hi.show()
}

fun getGreenLine(): Component {
    return object : Component() {
        override fun paint(g: Graphics) {
            println("Graphics Printing starts")
            g.color = 0x00ff00
            g.fillRect(x, y, width, height)
        }

        override fun calcPreferredSize(): Dimension {
            return Dimension(1, 20)
        }
    }
}

如上所示,矩形的宽度为 1,高度为 20

高度似乎是正确的,但宽度穿过屏幕。

显示具有正确尺寸的矩形的正确方法是什么?

在此处输入图像描述

标签: graphicscodenameone

解决方案


但是,我从未使用过 Kotlin……在此示例中,尝试替换BorderLayout()BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER)以为组件提供其首选大小。

一般来说,布局管理器可以或不能使用首选大小,请参阅:https ://www.codenameone.com/manual/basics.html

例如,FlowLayout总是给一个组件它的首选大小;BoxLayout.y()始终为组件提供其首选高度,但使用最大可用宽度;等等


推荐阅读