我正在尝试生成包含姓名,分支和当前日期的城市的发票号。我收集了JComboboxes和SimpleDateFormat的信息。但最后在我们连接所有值并将它们设置为Jtextfield之后,我得到了一个超出绑定异常的字符串索引。
我是java新手并且对此没有太多了解,无论我为此做出的努力如下所示。我将感谢有兴趣支持我的人。欢迎靴子和花束。
private void bt_generateActionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == bt_generate) {
if ((cb_bkname.getSelectedItem()
.equals("<html><font color=\"red\">SELECT NAME</font></html>"))
|| (cb_brname.getSelectedItem()
.equals("<html><font color=\"red\">SELECT BRANCH</font></html>"))
|| (cb_plname.getSelectedItem()
.equals("<html><font color=\"red\">SELECT PLACE</font></html>"))
){
} else {
String datePrefix = new SimpleDateFormat("MMMM dd, YYYY")
.format(new Date());
tf_rm_dt.setText(datePrefix);
Object name = cb_bkname.getSelectedItem();
String bn = name.toString().substring(0, 3);
Object branch = cb_brname.getSelectedItem();
String br = branch.toString().substring(0, 4);
Object city = cb_bkname.getSelectedItem();
String pl = city.toString().substring(0, 4);
String curdt = new SimpleDateFormat("dd-MM-YY")
.format(new Date());
tf_rm_id.setText("" + bn + "/" + br + "/" + "/" + curdt);
}
}
}
StackTrace如下:
run:
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.substring(String.java:1955)
at myproj.DATAENTRY.bt_generateActionPerformed(DATAENTRY.java:2215)
at myproj.DATAENTRY.access$2300(DATAENTRY.java:20)
at myproj.DATAENTRY$24.actionPerformed(DATAENTRY.java:597)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
答案 0 :(得分:1)
你的一个字符串是简短的:
错误是在这三行中的一行
String bn=name.toString().substring(0, 3);
String br=branch.toString().substring(0, 4);
String pl=city.toString().substring(0, 4);
打印字符串,并在执行substring()
之前检查长度答案 1 :(得分:0)
这是从组合框中获取信息的低效且过于复杂的方法!在连接之前,您不能将选择分配给对象(例如,作为枚举类型)吗?如果您知道选择的内容(希望您这样做),则不需要使用子字符串!