Codenameone: пользовательский компонент не получает нужную высоту - PullRequest
1 голос
/ 22 марта 2020

Я пытался напечатать прямоугольник в коденамоне .

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

Высота кажется правильной, но ширина идет по экрану.

Как правильно отобразить прямоугольник с правильным размером ?

enter image description here

1 Ответ

2 голосов
/ 22 марта 2020

Я никогда не использовал Kotlin, однако ... в этом примере попробуйте заменить BorderLayout() на BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER), чтобы присвоить компоненту его предпочтительный размер.

В общем, макет менеджеры могут или не могут использовать предпочтительный размер, см .: https://www.codenameone.com/manual/basics.html

Например, FlowLayout всегда дает компоненту его предпочтительный размер; BoxLayout.y() всегда дает компоненту предпочтительную высоту, но с использованием максимально доступной ширины; и др c.

...