Как получить доступ к компоненту Swing, добавленному в JPanel, который не был объявлен? - PullRequest
1 голос
/ 30 сентября 2019

Если я добавлю компонент (скажем, JLabel) в JPanel, не объявив его, есть ли способ получить доступ к JLabel после его создания? Я пытаюсь установить выравнивание компонента, но не могу получить доступ к методу setAlignmentX () даже через getComponent ().

testPanel.add(new JLabel("test label"));
testPanel.getComponent(0).setAlignmentX(Component.CENTER_ALIGNMENT);

Я пробовал getComponent (), но метод setAlignmentX () не можетЯ решил, что метод getComponent () не возвращает JLabel правильно, возможно потому, что я никогда официально не объявлял его. У меня нет других компонентов, добавленных в JPanel. Я знаю, что всегда мог объявить JLabel до его добавления в JPanel, но я бы предпочел просто добавить new JLabel("test label"), а не объявлять его до добавления.

1 Ответ

1 голос
/ 30 сентября 2019

Вероятно, рекомендуется объявить сначала JLabel, как вы упомянули, но ответить на ваш вопрос ...

Метод getComponent(int) возвращает java.awt.Component, а неJComponent (ни JLabel). Component не имеет такого метода setAlignmentX (у него есть только геттер).

Предположим, вы уверены, что компонент, который вы получаете, - JLabel, вам придется его разыграть:

((JLabel)testPanel.getComponent(0)).setAlignmentX(Component.CENTER_ALIGNMENT);

Вы могли бы видеть, что универсализация этого необходимого приведения повсюду будет менее удобной, чем простое объявление JLabel первым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...