所以我有这个班级“会员”:
package pkgData;
import java.io.Serializable;
public class Member implements Comparable<Member>, Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private String city;
public Member(String nameOfMember,String location) {
super();
this.name = nameOfMember;
this.city=location;
}
public String getNameOfMember() {
return name;
}
public String getLocationOfMember() {
return city;
}
public void setNameOfMember(String nameOfMember) {
this.name = nameOfMember;
}
@Override
public String toString() {
return name +", " + city;
}
@Override
public int compareTo(Member o) {
int result =this.getNameOfMember().compareTo(o.getNameOfMember());
if(result==0){
result = this.getLocationOfMember().compareTo(o.getLocationOfMember());
}
return result;
}
}
我有一个可编辑的JComboBox,ComboBox的模型是DefaultComboBoxModel。
所以问题是如果我转换selectedItem:
Member nameOfMember = (Member)memberModel.getSelectedItem();
if(nameOfMember== null)
throw new Exception("please select a name and a location");
它仅检查输入的字符串是否为空。如果我输入一个像“Name,Location”这样的字符串,我总是得到一个例外,即String不能转换为Member。我必须输入哪个字符串才能将字符串强制转换为成员?
这是我的JComboBox:
private JComboBox<Member> getComboBoxMember() {
if (comboBoxMember == null) {
comboBoxMember = new JComboBox<Member>();
comboBoxMember.setEditable(true);
comboBoxMember.setModel(memberModel);
}
return comboBoxMember;
}
这里是全局变量:
private DefaultComboBoxModel<Member> memberModel;
private JComboBox<Member> comboBoxMember;
答案 0 :(得分:7)
String nameOfMember = (String) memberModel
.getSelectedItem();if(nameOfMember==null)throw new Exception("please select a name and a location");else
{
String[] parts = nameOfMember.split(",");
String part1 = parts[0]; // name
String part2 = parts[1]; // location
Member member=new Member(part1, part2);
}
答案 1 :(得分:0)
字符串拆分&amp;演员方法
如果你得到的字符串为null,或者你的格式匹配得好,你可以做的就是首先测试。然后,您可以使用这些元素创建一个新对象。
这是一个小示例代码:
URL.createObjectURL()
JComboBox方法
Java 7发生了一种新的String memberData = (String)memberModel.getSelectedItem();
if(memberData == null || memberData.split(", ")[0].isEmpty() || memberData.split(", ")[1].isEmpty()) {
throw new Exception("Data is incorrect, please provide name and location separated with ", ");
}
Member member = new Member(memberData.split(", ")[0], memberData.split(", ")[1]);
扩展可能性,现在可以通过JComboBox
形式进行一般参数化(如ArrayList
s)。因此,您可以使用JComboBox<Type>
获得的对象现在可以转换为您在getSelectedItem()
参数中提供的泛型类型。唯一的问题是,在编辑JComboBox
时,就像您的情况一样,数据会转换为简单的JComboBox
。
您可以在侦听器方法中执行的操作(我将使用String
)如下:
ActionListener
但是这种方法的问题在于你最终仍然使用第一种方法。