【问题标题】:How to call `setText` on multiple JTextfields?如何在多个 JTextfields 上调用`setText`?
【发布时间】:2015-06-02 05:39:03
【问题描述】:

我想想办法在几行(最好是一行)代码中为多个JTextfields 设置文本,而不是为每个文本字段换行。

我正在寻找一种在多个 JTextfield 值上调用 setText 方法的方法。我的代码工作正常,但我不想为每个JTextfield 写出someField.setText("0.00");

这是我想缩短重复调用的代码:

JButton btnNewButton_1 = new JButton("Clear");
    btnNewButton_1.setBounds(367, 533, 86, 32);
    btnNewButton_1.setFont(new Font("Tahoma", Font.PLAIN, 11));
    btnNewButton_1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            textIncome.setText("0.00");
            textGrossSalary.setText("0.00");
            textGrossSalary.setText("0.00");
            textHousehold.setText("0.00");
            textFood.setText("0.00");
            textChildren.setText("0.00");
            textBills.setText("0.00");
            textIncidentals.setText("0.00");
            textCredit.setText("0.00");
            textHome.setText("0.00");
            textInvestings.setText("0.00");
            textPets.setText("0.00");
            textTransport.setText("0.00");
            textLifestyle.setText("0.00");
            textTax.setText("0.00");
            textDisposable.setText("0.00");
            textHealthFitness.setText("0.00");
            textGiftsDonations.setText("0.00");

        }

    });

【问题讨论】:

  • 我认为你可以使用反射。
  • 您的问题获得了几票赞成;我编辑了您的问题,以便未来的读者不太可能结束投票。如果您不喜欢我的任何更改,请随时edit 他们随意。您可以查看 revision history 了解过去的更改。

标签: java swing jtextfield boilerplate


【解决方案1】:

将它们放入List 或数组中并对其进行迭代

例如,创建一个实例字段数组,其中包含要设置的字段(为相同的值)

private JTextField fields[] = new JTextField[]{
        textIncome,
        textGrossSalary,
        textGrossSalary,
        textHousehold,
        textFood,
        textChildren,
        textBills,
        textIncidentals,
        textCredit,
        textHome,
        textInvestings,
        textPets,
        textTransport,
        textLifestyle,
        textTax,
        textDisposable,
        textHealthFitness,
        textGiftsDonations};

然后当ActionListener被触发时,遍历它...

btnNewButton_1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        for (JTextField field : fields) {
            field.setText("0.00");
        }
    }
});

基于btnNewButton_1.setBounds(367, 533, 86, 32);,我建议避免使用null 布局,像素完美布局是现代用户界面设计中的一种错觉。影响组件单个尺寸的因素太多,您无法控制。 Swing 旨在与核心的布局管理器一起工作,丢弃这些将导致无穷无尽的问题和问题,您将花费越来越多的时间来尝试纠正

【讨论】:

  • 感谢您的快速响应。我想那将是个好主意。但是如何将 JTextfield 放入数组中呢?我以为你需要普通的数据类型。
  • 数组可以包含任何数据类型、原语或对象。例如,您可以像任何数组 {Type}[] name = new {Type}[{size}]; 一样声明它
  • @BrianN 不!你可以在数组中存储任何你想要的东西。只需执行JTextField [] fields = new JTextField[num];。或者使用 ArrayList 并执行 ArrayList<JTextField> fields = new ArrayList<JTextField>();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 2014-05-19
  • 2018-10-23
相关资源
最近更新 更多