我想从列表中选择用户的选择并将其转换为使用Jbox的字符串。如何将内容转换为字符串,以便我可以使用它?
public class Graph extends JFrame
{
private String temp;
public Graph()
{ }
public void CreateBox(String[] a)
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton jButton1 = new JButton("ok");
final JList jList1 = new JList(a);
jButton1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Object contents = jList1.getSelectedValue();
//System.out.println(contents);
setChoise((String)contents);//how can i convert it to string ?
}
});
JButton jButton2 = new JButton("close");
jButton2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
frame.add(jList1, "Center");
frame.add(jButton1,"South");
frame.add(jButton2,"North");
frame.setSize(300, 200);
frame.setVisible(true);
}
public void setChoise(String temp)
{
this.temp=temp;
}
public String getChoise()
{
return this.temp;
}
}
答案 0 :(得分:5)
我将与众不同并解释一个解决方案,而不是将Object
转换为String
的解决方案。而只是声明你的JList
正确使用(它似乎是持有Strings
)。只需将列表声明为
final JList<String> jList1 = new JList<String>(a);
然后getSelectedValue()
方法将返回String
而不是原始Object
,允许您在接受String
的方法中使用它。
然而,正如人们已经注意到的那样,如果您需要将列表操作为Objects
,则无法执行此操作,因此只有在您使用Strings
答案 1 :(得分:0)
最简单的方法是实现该对象的toString方法。
@Override public String toString() {
return field1 + field2; //Example
}
然后你可以简单地做
setChoise((ClassType)contents);
修改强>
另一个选项是:
将Object
Typecast到其class
。 (在你的情况下,你没有这样做)
假设对象属于City
类型,您可以简单地放置City myCity = (City)contents
(再次,您必须管理多个选择)
然后调用要显示的字段的getter。说:
setChoise(myCity.getName);
答案 2 :(得分:0)
制作一个名为:
的方法public String toString(){
String result = "All the values inside the class u want to display";
return result;
}
现在使用System.out.println(Graph);
它应该从toString()
方法