首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swing中创建用于表单输入的Java GUI

在Swing中创建用于表单输入的Java GUI
EN

Stack Overflow用户
提问于 2009-05-05 08:32:12
回答 7查看 10K关注 0票数 3

嗯,我已经在互联网上找遍了,就是找不到这个问题的答案,所以也许有人可以提供一些见解。

我正在开发一个相对简单的Java应用程序,它将取代目前用于系统访问请求的Word文档。它旨在允许表单输入新员工的招聘信息-姓名、所需的访问权限等。

所以这就是我的问题。尝试制作一个包含所有文本字段和所有内容的GUI是令人惊讶的痛苦。因为每个小部件都有一点不同,在填写表单后获取输入似乎需要每个小部件有一个单独的引用,以便我可以单独调用它们。这意味着一个部分的每个面板都有6-10个不同的私有字段。(我尝试将所有类似的小部件添加到列表中,并在循环中调用它们,但似乎不起作用。)

似乎web表单在某些方面更适合这样做,但我没有可用的基础设施来做到这一点。对于类似的东西,有没有人找到比这个更好的解决方案?它看起来就像是一大堆代码。请看下面的想法(我放了一些注释,而不是实际的代码,因为它太长了)。感谢您的关注!

代码语言:javascript
复制
    private JComboBox my_dates;
    private JTextField my_date1;
    private JTextField my_date2;
    private JTextField my_request_date;
    private JTextField my_new_legal_name;
    private JTextField my_new_pref_name;
    private JTextField my_new_username;
    private JTextField my_prev_legal_name;
    private JTextField my_prev_pref_name;
    private JTextField my_prev_username;
    private JTextField my_emp_id;
    private JTextField my_manager;
    private JTextField my_auth_requestor;
    private JTextField my_auth_phone;

    public NameChangePanel(FormSection the_section)
    {
        super();
        initialize();
        buildPanel(the_section.getFields());
    }

    private void initialize()
    {
        // Create all the widgets individuall
    }

    private void buildPanel(List the_fields)
    {
        // add a field label
        // add a component
        // repeat for all values
    }

    public List getFormValues()
    {
        // Call all of the private fields individually
        return values;
    }
}
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-05-05 08:41:13

普通的Swing是冗长的--没有任何参数。基本上,对于这类事情,我最终依赖于一堆自己开发的工具/工厂方法,比如createTextBox(),它是参数化的,用于通用,并将执行所需的3-8条语句。

我有时甚至会参数化布局。我倾向于将所有布局简化为GridBagLayout (其他人使用BorderLayout,等等;这只是个人喜好的问题),然后创建将控件放在网格中特定点的方法。

如果您不打算使用基于Web的应用程序,那么我将继续使用Swing。它可能很冗长,但对于一个简单的表单来说并不是那么困难。

票数 5
EN

Stack Overflow用户

发布于 2009-05-05 23:39:05

可以说我疯了,但我不喜欢gui构建器。我更喜欢手工编码带来的额外控制。此外,由于代码是您自己编写的,因此调试起来要容易得多。重要的是按照逻辑顺序布局代码,并使用有条不紊的变量名。

你提到过尝试使用列表。然而,我根本看不出这将如何为您节省很多时间(或者正如我前面所暗示的,您将在实现上节省的时间,您将在调试过程中损失)。我猜当你开始对JTextFields的输入进行健全检查时,问题就开始出现了。我建议将JTextField子类化为MoneyTextField、PhoneNumberTextField等,这些子类化可用于设置ActionListener,以阻止人们做愚蠢的事情。

票数 3
EN

Stack Overflow用户

发布于 2009-05-05 09:10:55

Netbeans有一个被大多数人认为相当不错的gui构建器。此屏幕显示展示了可能对您有帮助的数据绑定功能。

另一种选择可能是推出你自己的演示框架,这取决于你想要的复杂程度,并不是那么困难和有趣。只需使用反射将字段从对象中拉出,并将这些字段转换为窗口小部件,然后再转换回来。确保使用布局管理器为您完成大部分繁重的工作。

是的,总的来说,gui的东西不是java的强项,但你应该发现它已经足够好了。

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

https://stackoverflow.com/questions/823884

复制
相关文章

相似问题

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