【问题标题】:how do I re-use an action listener multiple times on a JTextField in java?java - 如何在java中的JTextField上多次重复使用动作监听器?
【发布时间】:2016-02-13 23:01:53
【问题描述】:

我的程序应该获取一个人的信息(名字和姓氏、地址、电话),以便将这个人添加到地址簿中。

我做了一个JLabel,它在下面给出了输入内容的说明。在JLabel 下方是一个JTextField,其中有一个ActionListener 监听正在输入的内容。我的方法有大约 8 个 ActionListener 和 8 个 actionPerformed 方法。我遇到了麻烦,它不起作用。我想不出任何其他方法。

【问题讨论】:

  • 您的问题同时使用了 Swing 和 SWT 标签,这使您的问题处于不可能的状态——要么这是一个 Swing 问题,要么是一个 SWT 问题,但不可能两者兼而有之。请删除不适当的标记(可能是 SWT 标记)。
  • Swing 和 swt 是一回事。 SWT 代表摆动小部件。
  • "Swing and swt is the same thing" -- 不,你错了,事实上我会说非常错了,因为它们是两个完全不同的 GUI 库。您的问题文本显示您的问题是一个 Swing 问题 - 所以为了您自己的利益,请去掉 swt 标签,因为如果您坚持使用错误的标签,您会混淆本网站上的人们。
  • SWT = "标准小部件工具包"。在做出这样的陈述之前,只需谷歌一下。说真的。
  • 然后听专家的——我都用过,你又错了。不过你好像不想理会,所以我就走了。

标签: java eclipse swing


【解决方案1】:

最好创建一个表单,可能使用 GridBagLayout 或 MigLayout 来保存显示 JLabel/JTextField 对,以便用户可以在一个简单的表单上输入所有数据,就像您使用的大多数软件一样。

如果您绝对必须使用单个 JTextField,那么您应该使用单个 ActionListener,但要根据 GUI 的 状态 更改它的响应方式。也就是说,也许使用一个 int 计数器变量,每次输入数据时递增,并根据计数器保存的值对侦听器执行数据操作。

【讨论】:

  • 我很想制作一个弹出式表单,要求用户输入不同行的信息。唯一的问题是我不知道该怎么做,而且我到处搜索,但没有运气。所以,如果你有一个谷歌教程,我很想知道。这是我的第一个选择。但对我来说似乎更复杂。
  • @Beatle234:好吧,看看我的代码并回答here,它显示了这种工作形式。
【解决方案2】:

您可以创建侦听器的实例并在整个类中重用它,例如:

...

OnChangeListener listener = new OnChangeListener() {
    //All the code here
};

...

textField1.addOnChangeListener(listener);
textField2.addOnChangeListener(listener);
textField3.addOnChangeListener(listener);

...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多