【问题标题】:How to autoincrement string in java swing?java - 如何在java swing中自动增加字符串?
【发布时间】:2012-10-21 19:03:08
【问题描述】:

我想让我的程序中的字段 joCode 自动递增,但我有这样的格式 --> JP100000 ,每次用户单击“保存”按钮时,它将递增到 JP100001 , JP100002 ,直到 JP199999 ..

这是我的代码:

   try {
        int div = view.getCbDiv().getSelectedIndex();
        int l = 100000;
        do {
            if ( div == 0 ) {
                view.getTxtJobCode().setText("JP" + l);
            }
            else {
                view.getTxtJobCode().setText("JU" + l);
            }
        } while(l <= 199999);

        l++;
    }

【问题讨论】:

  • 您可能希望将l++ 移动到do 块中。

标签: java swing for-loop while-loop auto-increment


【解决方案1】:

希望您的代码是用 actionEvent 方法编写的。所以保持你的增量计数器作为全局变量

private int l = 10000;

@Override
public void actionPerformed(ActionEvent e) {
    int div = view.getCbDiv().getSelectedIndex();
    if (div == 0) {
        view.getTxtJobCode().setText("JP" + l);
    } else {
        view.getTxtJobCode().setText("JU" + l);
    }
    l++;
}

【讨论】:

  • 我认为l++ 应该在else 块之外,否则它不会在所有情况下都增加...
  • 我对每个(好)问题的好答案都很感兴趣。所以你去。 ;)
【解决方案2】:

正如 Andre 所说,将 l++ 行移到您的 do 块外壳中:

   try {
        int div = view.getCbDiv().getSelectedIndex();
        int l = 100000;
        do {
            if ( div == 0 ) {
                view.getTxtJobCode().setText("JP" + l);
            }
            else {
                view.getTxtJobCode().setText("JU" + l);
            }
            l++;
        } while(l <= 199999);
    }

【讨论】:

    【解决方案3】:

    试试我的例子,根据你的ID格式JP100001,ID的长度将是8,前缀是JPJU .

        /**
         * This method is used to format plain id (plain number). Mostly,
         * this method is used in setId() methods of entities.
         * <p>
         * E.g.
         * Input: id=523, prefix="JP", maxLength=15
         * Output: JP0000000000523
         * <p>
         * @param id id must not be null.
         * @param prefix prefix must not be null.
         * @param maxLength maximum length of the id string and it must not be negative number.
         * @return a formatted id string
         */
        public static String formatId(String id, String prefix, int maxLength) {
            if (!id.startsWith(prefix)) {
                int length = id.length() + prefix.length();
                for (; (maxLength - length) > 0; length++) {
                    id = '0' + id;
                }
                id = prefix + id;
            }
            return id;
        }
    
        yourMethod() {
            try {
                int div = view.getCbDiv().getSelectedIndex();
                int l = 100000;
                do {
                    if ( div == 0 ) {
                        view.getTxtJobCode().setText(formatId((l + ""), "JP, 8));
                    }
                    else {
                        view.getTxtJobCode().setText(formatId((l + ""), "JU, 8));
                    }
                } while(l <= 199999);
    
                l++;
            }
        }
    

    【讨论】:

    • @ayyoung,是 id 生成。您可以根据需要配置 ID 格式和长度。
    • 它不能工作,因为 formatId (String, String, int) 但是当它在 setText 中调用时,它是必需的 (int,String,int) ...
    • @ayyoung :) 再试一次 (l + "") intstring,我会更新我的帖子。
    • 该值显示lastes值,但我想做这个循环,当我插入新数据时循环该值,而不是同时显示所有循环值,当我单击按钮时一个一个新建一次,显示JP/JU100001,再次点击新建显示JP/JU100002,以此类推..
    【解决方案4】:

    我会使用NumberFormat,就像他们在tutorial 中显示的那样。也许是这样的:

    NumberFormat myFormat = new DecimalFormat("000000");
    view.getTxtJobCode().setText("JP" + myFormat.format(l));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 2021-10-20
      • 2019-06-22
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      相关资源
      最近更新 更多