gpt4 book ai didi

Groovy SwingBuilder : using a scrollpanel to show a list of panels

转载 作者:行者123 更新时间:2023-12-04 06:21:55 24 4
gpt4 key购买 nike

我想显示包含组件的面板列表,即复选框、标签、按钮,都在同一条水平线上;每个面板代表一组组件,用于显示一个项目的信息。
我需要将面板列表(数量未定)放入滚动面板以适应主面板高度。

我似乎找不到将滚动面板和面板与组件混合的解决方案。

我想得到这个结果:

滚动面板{

  • 复选框|项目 1 |按钮 1 |按钮 1 |标签1 |标签1
  • 复选框|项目2 |按钮2 |按钮2 |标签2 |标签2
  • 复选框| item3 |按钮3 |按钮3 |标签3 |标签3

    [ ... ]

  • }

    有一个我目前在这里展示的工作示例:
    Groovy SwingBuilder : button to change the color of a panel

    在那里,您可以看到有 6 个项目,每个项目都有各自相关的组件。
    现在,如果我想显示 60 个项目而不是 6 个,框架会扩展以适应它们,但会超出屏幕尺寸。

    我似乎很明显那种“滚动面板”可以完成这项工作,但我无法让它工作,尽管我检查了 Java 教程中的所有示例和相关问题here。

    蒂亚。
    米歇尔

    最佳答案

    您可以将面板放在 vbox 内,反过来你把它放在一个 scrollPane 中.

    从上一个问题中获取代码,您最终会得到如下结果:

    import groovy.swing.SwingBuilder
    import javax.swing.WindowConstants as WC
    import javax.swing.JOptionPane
    import javax.swing.JScrollPane
    import javax.swing.BoxLayout as BXL

    int numPanels = 20

    swing = new SwingBuilder()
    frame = swing.frame(title:'test', pack:true, visible:true, defaultCloseOperation:WC.HIDE_ON_CLOSE) {
    panel(id:'mainPanel'){
    scrollPane( verticalScrollBarPolicy:JScrollPane.VERTICAL_SCROLLBAR_ALWAYS ) {
    vbox {
    (1..numPanels).each { num ->
    def panelID = "panel$num"
    def pane = panel( alignmentX:0f, id:panelID, background:java.awt.Color.GREEN ) {
    label('description')
    textField( id: "description$num", text:panelID, columns: 70 )
    button( id: "buttonpanel$num", text:panelID, actionPerformed:{
    swing."$panelID".background = java.awt.Color.RED
    } )
    }
    }
    }
    }

    boxLayout(axis: BXL.Y_AXIS)
    panel(id:'secondPanel' , alignmentX: 0f){
    button('Quit', actionPerformed:{
    frame.visible = false
    })
    }
    }
    }
    frame.size = [ frame.width, 600 ]

    关于Groovy SwingBuilder : using a scrollpanel to show a list of panels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6444068/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com