如何在JavaSwing中自动增加字符串?
我想让程序中的字段joCode自动递增,但我有一个类似-->JP100000的格式,每次用户单击“保存”按钮,它将递增到JP100001、JP100002,直到JP199999 这是我的代码:如何在JavaSwing中自动增加字符串?,java,swing,for-loop,while-loop,auto-increment,Java,Swing,For Loop,While Loop,Auto Increment,我想让程序中的字段joCode自动递增,但我有一个类似-->JP100000的格式,每次用户单击“保存”按钮,它将递增到JP100001、JP100002,直到JP199999 这是我的代码: try { int div = view.getCbDiv().getSelectedIndex(); int l = 100000; do { if ( div == 0 ) { view.ge
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++;
}
试试看{
int div=view.getCbDiv().getSelectedIndex();
int l=100000;
做{
如果(div==0){
view.getTxtJobCode().setText(“JP”+l);
}
否则{
view.getTxtJobCode().setText(“JU”+l);
}
}而(l希望您的代码是用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++;
}
正如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);
}
试试看{
int div=view.getCbDiv().getSelectedIndex();
int l=100000;
做{
如果(div==0){
view.getTxtJobCode().setText(“JP”+l);
}
否则{
view.getTxtJobCode().setText(“JU”+l);
}
l++;
}而(l试试我的例子,根据您的ID格式JP100001
,ID的长度将8,前缀将JP和JU
/**
* 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++;
}
}
/**
*此方法用于格式化普通id(普通编号)。通常,
*此方法用于实体的setId()方法。
*
*例如。
*输入:id=523,prefix=“JP”,maxLength=15
*输出:JP0000000000523
*
*@param id不能为空。
*@param前缀不能为空。
*@param maxLength id字符串的最大长度,不能为负数。
*@返回格式化的id字符串
*/
公共静态字符串formatId(字符串id、字符串前缀、int maxLength){
如果(!id.startsWith(前缀)){
int length=id.length()+prefix.length();
对于(;(maxLength-length)>0;length++){
id='0'+id;
}
id=前缀+id;
}
返回id;
}
你的方法(){
试一试{
int div=view.getCbDiv().getSelectedIndex();
int l=100000;
做{
如果(div==0){
view.getTxtJobCode().setText(formatId((l+“”),“JP,8));
}
否则{
view.getTxtJobCode().setText(formatId((l+“”),“JU,8));
}
}而(l我会使用NumberFormat
,就像它们在
NumberFormat myFormat = new DecimalFormat("000000");
view.getTxtJobCode().setText("JP" + myFormat.format(l));
你可能想把l++
移到do
块中。我认为l++
应该在else
块之外,否则它不会在所有情况下都增加……我对每个(好)问题都有好的答案感兴趣。所以你来了。;)@ayyoung,这是id生成。您可以根据需要配置id格式和长度。它无法工作,因为formatId(String,String,int)在setText中调用时,它是必需的(int,String,int).@ayyoung:)请使用(l+“”)重试
int
到string
,我将更新我的帖子。该值显示最近的值,但我想进行此循环,在插入新数据时循环该值,而不是同时显示所有循环值,当我单击“新建”按钮一次时,它将逐个显示JP/JU100001,当我再次单击“新建”时,它将显示JP/JU100002,等等