java将类型对象转换为类型JButton?
大家好,我有一个问题,我有一个object Class类型的对象,我想把它转换成java类型的对象。摆动JButton有什么方法可以做到这一点吗? 代码如下:
private void EventSelectedFromList(java.awt.event.ActionEvent evt) {
// add code here
try
{
String eventName = (String)EventList.getSelectedItem();// get the event
EventSetDescriptor ed = eventValue(events,eventName);
if(ed.getListenerType() == ActionListener.class){// check if selected event has an actionListerner listener
AddEventHandlerButton.setEnabled(true);// Enable eventhandler button
String objectName = (String) ObjectList.getSelectedItem();
Object ob = FindObject(hm, objectName);// retrieve the object from hashmap
// now 'ob' of type of JButton, I want to add ActionListener to this JButton???
Class zzz = ob.getClass();
System.out.println(zzz);
} else {
AddEventHandlerButton.setEnabled(false);
}
}catch(Exception ex){
JOptionPane.showMessageDialog(null,
"Error",
"Inane error",
JOptionPane.ERROR_MESSAGE);
}
}
有什么想法吗? 谢谢
# 1 楼答案
您可能只是想要一个强制转换(可能先进行
instanceof
检查,如Andreas所示;这取决于您所找到的对象不是JButton
时希望发生什么):但这里还有更多的细节。您应该区分对象的类型和变量的类型
在您的例子中,
ob
本身的类型肯定是Object
。但是,ob
的值可能是对JButton
实例的引用,在这种情况下,可以进行强制转换,如上所述请注意,这根本不会更改对象的类型。一旦创建了对象,它将永远不会更改其类型。您所做的只是声明一个类型为
JButton
的新变量,并要求JVM检查ob
的值是否真的引用了JButton
的一个实例(或子类;或者它是一个空引用)。如果是这种情况,button
的值最终将与ob
的值相同(即对同一对象的引用)。如果不是,将抛出一个ClassCastException
你明白我说的变量类型和它引用的对象类型之间的区别吗?理解这种差异非常重要
# 2 楼答案
将类实例转换为JButton实例(也称为casting)是不可能的,这不是正确的方法。但是您可以使用Class对象创建JButton的新实例:
但看起来您希望通过findObject获得一个按钮,并希望向已经存在的按钮添加一个侦听器,我建议这样做: