2010-09-01 2 views
0

Привет, ребята У меня проблема, которая меня сильно запутала, у меня есть «writeMethod», который является типом класса Method, «dpv», который является типом свойстваDescriptor, и я получил метод writeMethod объекта getWriteMethod(), Теперь моя проблема заключается в том, чтобы установить «writeMethod» писать на свойства объекта (например, JLabel, JButton) вот мой код:using writeMethod для записи на свойстве объекта?

if(dpv.getPropertyType().isPrimitive() 
     || dpv.getPropertyType().isInstance("Integer")) 
     { 
      Method writeMethod = dpv.getWriteMethod(); 

      //setWriteMethod(writeMethod);<---------- Not sure about this part (doesn't work) 

      System.out.println(writeMethod); 
      PropertyValue.setEnabled(true); 
      SetButton.setEnabled(true); 
     } 
     else{ 

      PropertyValue.setEnabled(false); 
      SetButton.setEnabled(false); 
     } 

Спасибо за вашу помощь ребята

ответ

1

чтобы использовать метод напишите правду, вы должны вызвать ее. Простые свойства принимают одно значение - значение свойства, поэтому вы вызываете метод с одним аргументом. Следующий код устанавливает свойство на кнопку со значением 42:

Method writeMethod = dpv.getWriteMethod();  
JButton button = ...; // the target to write to 

try 
{ 
    writeMethod.invoke(button, 42); 
} 
catch (IllegalAccessException ex) 
{ 
    // handle these as appropriate 
} 
catch (IllegalArgumentException ex) 
{ 
} 
catch (InvocationTargetException ex) 
{ 
} 

Это маловероятно, что вы имеете их, но если свойство является редко используемым типом индексированного свойства, то вам необходимы использовать метод, как это:

writeMethod.invoke(target, index, propertyValue); 

Это соответствует методу сеттер

setIndexProperty(int index, PropertyType value); 
+0

Спасибо, что помогли – HAMID

Смежные вопросы