Доступ к динамическим компонентам (т. Е. Новой метке) в другой функции класса? - PullRequest
1 голос
/ 07 августа 2011

В настоящее время я работаю над апплетом Swing, и у меня возникают проблемы со ссылкой на мой пользовательский компонент AWT Canvas (очень простой расширенный класс) в других функциях класса, например, с любым другим компонентом (т. Е. Кнопкой), обычно создаваемым с помощью Netbean (7.0). Дизайнер.

Мой пользовательский элемент canvas, который я добавляю сюда, был уверен, что это подходящее место (особенно после того, как все другие сгенерированные компоненты были просто созданы в той же области)

public void init() {
    try {
        java.awt.EventQueue.invokeAndWait(new Runnable() {
            public void run() {
                initComponents();

                CustomCanvas myCan = new CustomCanvas();
                myCan.setBounds(100, 100, 200, 200);
                getContentPane().add(myCan);
          ...

Однако, в отличие от сгенерированных компонентов, я не могу получить к ним доступ по имени и, похоже, не могу получить к ним доступ другими способами (this.myCan). Я настроил пример функции, которая будет обрабатывать (сгенерированную) кнопку в форме Swing для управления ранее созданным экземпляром компонента myCan:

private void btnManipCanvasActionPerformed(java.awt.event.ActionEvent evt) {
  //Essentially Was wanting to call something here such as myCan.getGraphics().setRect...
}

Вы знаете способ доступа к myCan там? Должен ли я размещать пользовательские инициализации компонентов в другой области, чтобы они могли быть доступны общественности?

Ответы [ 2 ]

1 голос
/ 07 августа 2011

возможны проблемы или нет изображения, потому что вы, вероятно, смешиваете ATW Components с Swing JComponets,

если нет ничего особенного, что пришло из OpenGL, тогда ищите JPanel вместо AWT Canvas и для всех задыхающихся в Swing перенаправляйте все значения в JLabel

пожалуйста, прочитайте, как LayoutManager работает, чтобы избежать setBounds(int, int, int, int);

1 голос
/ 07 августа 2011

Просто сделайте canvas переменной экземпляра, как (я полагаю), все другие компоненты, созданные дизайнером Netbeans:

private CustomCanvas myCan;

public void init() {
try {
    java.awt.EventQueue.invokeAndWait(new Runnable() {
        public void run() {
            initComponents();

            myCan = new CustomCanvas();
            myCan.setBounds(100, 100, 200, 200);
            getContentPane().add(myCan);
            // ...
...