2013-02-17 2 views
-1

Я создал GUI в колебании с помощью NetBeans, в ней, структура hirarcy файла Java ниже,Access Java JTextField от основного метода

public class NewJFrame extends javax.swing.JFrame 
    private void initComponents 
-->   jTextField1 = new javax.swing.JTextField(); 

    public static void main 
     // one thread 
-->    jTextField1.setText("abc"); 

так при установке значения jTextField1 в потоке Внутри главного Функция, возникает ошибка «Нестатическая переменная jTextField1 не может быть ссылкой из статического контекста».

Я хочу, чтобы получить доступ только, что значение конкретного jTextField1 в, я не хочу, чтобы создать новый объект TextField внутри основной функции.

я в состоянии получить доступ к textfiled от события нажатия одной кнопки, в

и та же ошибка происходит в jList1 при добавлении/удалении элементов в нем, так что любое решение доступа, что контроль внутри основной() функция?

я имею базовые знания Java и я переключение проект в VB6 на Java ...

+0

Вы должны получить доступ к 'jTextField1', используя переменную экземпляра' NewJFrame' в 'main' body ... В качестве основного является статический метод и может обращаться к только классу (статическим) переменным и методам. –

+0

Один вопрос: почему вы вызываете 'setText' из JTextField в' main', а не в методе 'init'. Просто любопытно ... –

+0

это просто потому, что оно основано на клиентском сервере, поэтому поток работает в основном методе, и я хочу получить доступ к текстовому полю внутри потока. –

ответ

0

Вы можете либо изменить jTextField1 к статическим или создать его экземпляр внутри main

Переместить строку:

JTextField jTextField1 = new javax.swing.JTextField(); 

до main функция.

1

Ошибка говорит все ->Нестатическая переменная jTextField1 не может быть ссылкой из статического контекста.
jTextfield1 не является статическим и для доступа к нему из статического контекста (здесь метод main) вам нужна ссылка на объект класса.


попробовать это:

NewJFrame obj = new NewJFrame(); 
obj.jTextField1.setText("abc"); 

экземпляр поле должно быть доступно с помощью объекта

+0

Я хочу получить доступ только к определенному значению jTextField1, который уже создан, я не хочу создавать новый объект TextField внутри основной функции. –

+0

@BhaveshGangani Вы здесь не создаете новое текстовое поле. если вы хотите, то просто сделайте это jTextField1 static – exexzian

+0

. Я сделал отдельный класс для основной функции и использовал установщик в классе GUI и получил к нему доступ с помощью NewJFrame obj = new NewJFrame(); 'obj.TextSetter (" abc ");', запускается программа, но она вызывает ошибку «java.lang.NullPointerException» в отладчике. –

0

Мысли о чтении на упаковке качелей? Нетрудно учиться достаточно, чтобы создавать базовые окна и текстовые поля и взаимодействовать с ними самостоятельно, вместо того, чтобы использовать для этого netbeans.

Совет может отделять ваш графический интерфейс в классе, создавать в нем геттеры и сеттеры. Создайте объект класса GUI в другом классе и создайте его ... затем пройдите через него и используйте методы setter для управления текстовыми полями и т. Д. Есть много способов сделать это, но, на мой взгляд, вам нужно прочитать об этом.

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