首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在groovy中使用jxdatepicker和swingbuilder?

如何在groovy中使用jxdatepicker和swingbuilder?
EN

Stack Overflow用户
提问于 2018-02-07 20:23:25
回答 1查看 113关注 0票数 2

我正在尝试使用下面的代码来创建一个使用swingx和groovy的数据报警器

但我不知道因为不工作

我试图在firs标签中显示日期选择器,但没有显示任何内容

我不知道怎么回事

请帮我安排一下节目

这是我使用swingx和javax的最后代码IM。

使用swingbuilder,请检查下面的代码

帮我

,这不是同一个问题,我试着使用wingx,我的代码不工作,请检查这个部分,

Picker.setFormats(新SimpleDateFormat("dd.MM.yyyy"));tableLayout { picker.show()

代码语言:javascript
复制
import groovy.swing.SwingBuilder 
import groovy.beans.Bindable 
 import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
import static javax.swing.JFrame.EXIT_ON_CLOSE 
@Grapes(
    @Grab(group='org.swinglabs', module='swingx', version='1.6')
)

import org.jdesktop.swingx.JXDatePicker;
import java.awt.*

@Bindable
class Address { 
    String street, number, city
    String toString() { "address[street=$street,number=$number,city=$city]" }
}

def address = new Address(street: 'Evergreen Terrace', number: '742', city: 'Springfield')

def swingBuilder = new SwingBuilder()
swingBuilder.edt {  // edt method makes sure UI is build on Event Dispatch Thread.
    lookAndFeel 'nimbus'  // Simple change in look and feel.
    frame(title: 'Address', size: [350, 230],
            show: true, locationRelativeTo: null,
            defaultCloseOperation: EXIT_ON_CLOSE) {
        borderLayout(vgap: 5)

        panel(constraints: BorderLayout.CENTER,

                border: compoundBorder([emptyBorder(10), titledBorder('Enter your address:')])) {
        JXDatePicker picker = new JXDatePicker();
        picker.setDate(Calendar.getInstance().getTime());
        picker.setFormats(new SimpleDateFormat("dd.MM.yyyy"));

            tableLayout {
       picker.show()
                tr {
                    td {
                             picker
                    }
                    td {
                        textField address.street, id: 'streetField', columns: 20
                    }
                }
                tr {
                    td {
                        label 'Number:'
                    }
                    td {
                        textField id: 'numberField', columns: 5, text: address.number
                    }
                }
                tr {
                    td {
                        label 'City:'
                    }
                    td {
                        textField id: 'cityField', columns: 20, address.city
                    }
                }
            }

        }

        panel(constraints: BorderLayout.SOUTH) {
            button text: 'Save', actionPerformed: {
                println address
            }
        }

        // Binding of textfield's to address object.
        bean address,
            street: bind { streetField.text },
            number: bind { numberField.text },
            city: bind { cityField.text }
    } 
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-28 20:25:21

如果您正确地注册了JXDatePicker,那么您的示例应该有效--缺失的行看起来可能如下所示: registerBeanFactory("datePicker",JXDatePicker),并且您不需要实例化JXDatePicker小部件,也不需要显式地显示它,SwingBuilder应该处理这个问题,这个示例适合我:

代码语言:javascript
复制
import groovy.swing.SwingBuilder 
import groovy.beans.Bindable 
import java.text.SimpleDateFormat
import java.util.Calendar
import javax.swing.JFrame
import javax.swing.JPanel
import static javax.swing.JFrame.EXIT_ON_CLOSE 
@Grapes(
    @Grab(group='org.swinglabs', module='swingx', version='1.6')
)

import org.jdesktop.swingx.JXDatePicker
import java.awt.*

@Bindable
class Address { 
    String street, number, city
    String toString() { "address[street=$street,number=$number,city=$city]" }
}

def address = new Address(street: 'Evergreen Terrace', number: '742', city: 'Springfield')

def swingBuilder = new SwingBuilder()
swingBuilder.edt {  // edt method makes sure UI is build on Event Dispatch Thread.
    registerBeanFactory("datePicker", JXDatePicker)
    lookAndFeel 'nimbus'  // Simple change in look and feel.
    frame(title: 'Address', size: [350, 230],
            show: true, locationRelativeTo: null,
            defaultCloseOperation: EXIT_ON_CLOSE) {
        borderLayout(vgap: 5)

        panel(constraints: BorderLayout.CENTER,

                border: compoundBorder([emptyBorder(10), titledBorder('Enter your address:')])) {

            tableLayout {
                tr {                
                    td {
                        label 'Birth Date:'
                    }
                    td {
                        datePicker(date: new Date(), formats: new SimpleDateFormat("dd.MM.yyyy"))
                    }
                }
                tr {                
                    td {
                        label 'Street:'
                    }
                    td {
                        textField address.street, id: 'streetField', columns: 20
                    }
                }

                tr {
                    td {
                        label 'Number:'
                    }
                    td {
                        textField id: 'numberField', columns: 5, text: address.number
                    }
                }
                tr {
                    td {
                        label 'City:'
                    }
                    td {
                        textField id: 'cityField', columns: 20, address.city
                    }
                }
            }

        }

        panel(constraints: BorderLayout.SOUTH) {
            button text: 'Save', actionPerformed: {
                println address
            }
        }

        // Binding of textfield's to address object.
        bean address,
            street: bind { streetField.text },
            number: bind { numberField.text },
            city: bind { cityField.text }
    } 
}

然后,您也应该能够将日期选择器的值绑定到bean地址,以获得更多详细信息(请参阅:使用Groovy的SwingBuilder、TS-5098、JavaOne 2008构建富应用程序 )。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48672624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档