HAM*_*MID 0 java swing jbutton
嗨,我有一个问题,我有一个对象类型为Object Class的对象,我想将其转换为类型为java.swing.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);
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢
您可能只需要强制转换(可能instanceof首先要进行检查,如Andreas所示;如果找到的对象不是,则取决于要发生的事情JButton):
JButton button = (JButton) ob;
Run Code Online (Sandbox Code Playgroud)
但这里有更多细节。您应该区分对象的类型和变量的类型。
在您的情况下,ob本身的类型肯定是Object。但是,值ob可能是对JButton- 的实例的引用,在这种情况下,您可以如上所述进行转换。
请注意,这根本不会改变对象的类型。创建对象后,它将永远不会更改其类型。所有你正在做的是声明类型的新变量JButton,并要求JVM检查的价值ob真的不参考的实例JButton(或子类;或者说,它是一个空引用)。在这种情况下,的值button最终将与的值相同ob(即对同一对象的引用)。如果不是,ClassCastException将抛出a。
您是否了解变量类型与碰巧要引用的对象类型之间的区别的含义?了解这种差异非常重要。
| 归档时间: |
|
| 查看次数: |
5498 次 |
| 最近记录: |