我有一个Swing表单,我想检测已编辑的字段数据,以便我可以通过Web服务更新数据。似乎没有一种简单的方法可以做到这一点,因为有很多中等到复杂的代码示例,其中大多数都是我的头脑!但是,我认为我找到了一个符合我需求的简单解决方案,我希望由小组运行它来提供输入/建议。仅供参考:可能无关紧要,但要知道我正在使用NetBeans,因此应用程序会自动编码监听器等内容。
步骤1:当我加载表单时,我将所有数据保存到Class数组中,因此我知道每个字段的起点。以下是该负载的代码:
public void coSetSearchDetail(String coDetail){
String[] text;
System.out.println("SingleCO Result: "+ coDetail);
text = coDetail.split("\\|");
txtName_CoDetail.setText(text[1]);
txtAddr_CoDetail.setText(text[2]);
txtAddr2_CoDetail.setText(text[3]);
txtCity_CoDetail.setText(text[4]);
txtState_CoDetail.setText(text[5]);
txtZip_CoDetail.setText(text[6]);
stringarrayCoDetails[0] = text[0];
stringarrayCoDetails[1] = text[1];
stringarrayCoDetails[2] = text[2];
stringarrayCoDetails[3] = text[3];
stringarrayCoDetails[4] = text[4];
stringarrayCoDetails[5] = text[5];
stringarrayCoDetails[6] = text[6];
java.awt.CardLayout card = (java.awt.CardLayout)pnlMain.getLayout();
card.show(pnlMain, "pnlCoDetail");
}
步骤2:我为一个字段创建了一个Lost Focus事件监听器,并且正在测试该字段的当前字段值:
private void txtName_CoDetailFocusLost(java.awt.event.FocusEvent evt) {
if (!(txtName_CoDetail.getText().equals(stringarrayCoDetails[1]))){
createEditBorder();
}
}
private void createEditBorder (){
Border border = BorderFactory.createLineBorder(Color.RED, 2);
txtName_CoDetail.setBorder(border);
}
除了“这是一个好的方法吗?”的一般问题之外,我希望能够将字段名称传递给createEditBorder
方法,以便每个数据字段的监听器可以调用它,我有一个“编辑文本”格式的方法。