Moh*_*leb 5 java swing binding jtable jcombobox
我使用以下代码成功将JTextField绑定到JTable的选定行:
public static final void BindTableToFields(JTable Table, Object[] Fields) {
for (Object Field : Fields) {
BeanProperty<JTable, Object> tableBeanProperty;
String DesignCallID;
String PropertyName;
if (Field instanceof JTextField) {
BeanProperty<JTextField, String> BindingFieldProperty;
Binding<JTable, Object, JTextField, String> binding;
JTextField jTextField = (JTextField) Field;
DesignCallID = jTextField.getText();
PropertyName = "selectedElement." + GetCorrespondingColumn(Table, DesignCallID);
jTextField.setText("");
System.out.println("property name =" + PropertyName.trim());
tableBeanProperty = BeanProperty.create(PropertyName);
BindingFieldProperty = BeanProperty.create("text");
binding = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE,
Table,
tableBeanProperty,
jTextField,
BindingFieldProperty);
Converter<Object, String> old = binding.getConverter();
Converter<Object, String> converter = new Converter<Object, String>() {
@Override
public String convertForward(Object value) {
try {
if (value instanceof HashMap) {
HashMap hashMap = (HashMap) value;
System.out.println(hashMap);
// Object get = hashMap.get(GetCorrespondingColumn(Table, DesignCallID));
return (String) hashMap.get(GetCorrespondingColumn(Table, DesignCallID));
} else if (value instanceof String) {
return (String) value;
} else if (value instanceof Integer) {
Integer integer = (Integer) value;
return integer.toString();
} else if (value instanceof Float) {
Float float1 = (Float) value;
return float1.toString();
} else if (value instanceof Double) {
Double double1 = (Double) value;
return double1.toString();
} else if (value instanceof Date) {
Date date = (Date) value;
return date.toLocalDate().format(DateTimeFormatter.ISO_LOCAL_DATE);
}
MyLogger.Log_to_local(new Exception("Binding Class Not Handled" + value.getClass().getName()));
return "";
} catch (Exception e) {
e.printStackTrace();
MyLogger.Log_to_local(e);
}
return "impossible";
}
@Override
public Object convertReverse(String value) {
try {
return value;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
};
binding.setConverter(converter);
binding.bind();
} else
//
//
// other component as JPasswordField .....
Run Code Online (Sandbox Code Playgroud)
然后是我尝试绑定JComboBox的部分,我尝试了这两个版本:
if (Field instanceof JComboBox) {
//<editor-fold>
System.out.println("binding ");
JComboBox jComboBox = (JComboBox) Field;
BeanProperty<JComboBox, String> BindingFieldProperty;
Binding<JTable, Object, JComboBox, String> binding;
DesignCallID = jComboBox.getName();
PropertyName = "selectedElement." + GetCorrespondingColumn(Table, DesignCallID);
System.out.println("property name =" + PropertyName.trim());
tableBeanProperty = BeanProperty.create(PropertyName);
BindingFieldProperty = BeanProperty.create("selectedItem");
binding = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE,
Table,
tableBeanProperty,
jComboBox,
BindingFieldProperty);
Converter<Object, String> old = binding.getConverter();
Converter<Object, String> converter = new Converter<Object, String>() {
@Override
public String convertForward(Object value) {
try {
if (value instanceof HashMap) {
HashMap hashMap = (HashMap) value;
System.out.println(hashMap);
// Object get = hashMap.get(GetCorrespondingColumn(Table, DesignCallID));
return (String) hashMap.get(GetCorrespondingColumn(Table, DesignCallID));
} else if (value instanceof String) {
return (String) value;
} else if (value instanceof Integer) {
Integer integer = (Integer) value;
return integer.toString();
} else if (value instanceof Float) {
Float float1 = (Float) value;
return float1.toString();
} else if (value instanceof Double) {
Double double1 = (Double) value;
return double1.toString();
} else if (value instanceof Date) {
Date date = (Date) value;
return date.toLocalDate().format(DateTimeFormatter.ISO_LOCAL_DATE);
}
MyLogger.Log_to_local(new Exception("Binding Class Not Handled" + value.getClass().getName()));
return "";
} catch (Exception e) {
e.printStackTrace();
MyLogger.Log_to_local(e);
}
return "impossible";
}
@Override
public Object convertReverse(String value) {
try {
return value;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
};
binding.setConverter(converter);
binding.bind();
//</editor-fold>
}
Run Code Online (Sandbox Code Playgroud)
而另一个版本是:
System.out.println("binding jcombobox");
JComboBox jComboBox = (JComboBox) Field;
BeanProperty<JComboBox, Integer> BindingFieldProperty;
Binding<JTable, Object, JComboBox, Integer> binding;
DesignCallID = jComboBox.getName();
PropertyName = "selectedElement." + GetCorrespondingColumn(Table, DesignCallID);
System.out.println("property name =" + PropertyName.trim());
tableBeanProperty = BeanProperty.create(PropertyName);
BindingFieldProperty = BeanProperty.create("selectedItem");
binding = Bindings.createAutoBinding(UpdateStrategy.READ_WRITE,
Table,
tableBeanProperty,
jComboBox,
BindingFieldProperty);
Converter<Object, Integer> old = binding.getConverter();
Converter<Object, Integer> converter = new Converter<Object, Integer>() {
@Override
public Integer convertForward(Object value) {
try {
if (value instanceof HashMap) {
HashMap hashMap = (HashMap) value;
System.out.println(hashMap);
// Object get = hashMap.get(GetCorrespondingColumn(Table, DesignCallID));
return Integer.parseInt(""+hashMap.get(GetCorrespondingColumn(Table, DesignCallID)));
} else if (value instanceof String) {
return Integer.parseInt(""+value);
} else if (value instanceof Integer) {
Integer integer = (Integer) value;
return integer;
} else if (value instanceof Float) {
Float float1 = (Float) value;
return float1.intValue();
} else if (value instanceof Double) {
Double double1 = (Double) value;
return double1.intValue();
} else if (value instanceof Date) {
Date date = (Date) value;
MyLogger.Log_to_local(new Exception("Binding Class Not Handled" + value.getClass().getName()));
return 1;
}
MyLogger.Log_to_local(new Exception("Binding Class Not Handled" + value.getClass().getName()));
return 1;
} catch (Exception e) {
e.printStackTrace();
MyLogger.Log_to_local(e);
}
return 1;
}
@Override
public Object convertReverse(Integer value) {
try {
return value;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
};
binding.setConverter(converter);
binding.bind();
Run Code Online (Sandbox Code Playgroud)
我不知道我是否想念它,它对JcomboBox不起作用!因此,请告诉我是否有任何错误或遗漏的逻辑,以及是否有解决方案通过代码将我的JComboBox绑定到我的JTable,向我展示了如何。谢谢