установить видимое значение false для кнопки, используя отражение, возможно? - PullRequest
0 голосов
/ 30 мая 2019

Я просто пытаюсь скрыть кнопку через relfection.

Class userClass = Class.forName("vistas.RegistroPersonal");
Field f = userClass.getDeclaredField("btneliminar");
f.setAccessible(true);
f.setVisible(false);

есть ли способ ... поле не имеет метода setVisible ...

1 Ответ

0 голосов
/ 30 мая 2019

Метод setVisible () для поля не существует, вам нужно получить ссылку на метод setVisible (boolean) (по имени и типам параметров) и затем вызвать его:

public static void main(String[] args) throws Exception {
    TestApplication application = new TestApplication();
    Field field = TestApplication.class.getDeclaredField("button1");
    // This will allow us to access the button1 field even if it's private
    field.setAccessible(true);
    Method method = JButton.class.getMethod("setVisible", Boolean.TYPE);

    Object button = field.get(application);
    method.invoke(button, Boolean.FALSE);
}

public static class TestApplication {
    private JButton button1 = new JButton();
}

Вам нужен экземпляр чего-то, с чего можно начать, если вы начинаете с объекта, владеющего вашей кнопкой, вы можете получить его кнопку через поле, а затем вызвать метод.Если вы начинаете с экземпляра кнопки, вы можете вызвать метод.

Обратите внимание, что рефлексия кажется здесь запутанным способом, эквивалентным будет просто:

    TestApplication application = new TestApplication();
    application.button1.setVisible(false); 
...