2013-10-11 1 views
2

У меня есть много файлов .java в моем проекте. От FTall.java я хочу получить доступ {текстовое поле} t1 («главный» JFrame -> jPanel2) из ​​FormTTS.javaХотите получить текстовое поле из другого .java-файла в программе

T1 is here

Я сейчас получаю ошибки из-за этого только потому, что она не может найдите символ t1.

Это частное и я не могу изменить его на общественный

Edit: Я использую этот код уже открыть FTall из FormTTS.java: В кнопке в FormTTS

 FTall forma = new FTall(); 
JFrame frame = forma.getFrame(); 
forma.setVisible(true); 

и это в FTall

public JFrame getFrame() { 
    return jFrame1; 
} 
+0

Что такое видимость этого поля ..? –

+0

@MadProgrammer Пожалуйста, помогите –

+0

@BlackPanther Как это важно? так или иначе, он взорван. Если бы он не был виден, то и он не должен был показывать ошибку! –

ответ

2

Благодаря тому, как ваш код является структурой, вам нужно предоставить какой-то способ для FormTTS.t1

В FormTTS обеспечивают способ обнажает t1, что-то вроде getMainTextField, например ...

public JTextField getMainTextField() { 
    return t1; 
} 

Следующая проблема: FTall понадобится ссылка на экземпляр FormTTS. Возможно, самый простой способ был бы передать ссылку на конструктор FTall

private FormTTS mainForm; 

public FTall(FormTTS mainForm) { 
    this.mainForm= mainForm; 
} 

Это позволит вам получить доступ к t1, просто используя mainForm ссылки ...

JTextField field = mainForm.getMainTextField(); 

Лично я предпочел бы не подвергать текстовое поле, поскольку он дает слишком большой доступ к вызывающим абонентам, вместо этого я предпочел бы return текст и при необходимости предоставить средства для его изменения ...

So in FormTTS, я мог бы сделать что-то вроде ...

public String getMainText() { 
    return t1.getText(); 
} 

// Do this only if you need to have write access 
public void setMainText(String text) { 
    t1.setText(text); 
} 

Но это только мне ...

Чтобы получить значение, вы бы использовать подобный подход, как указано выше (для получения текстового поля)

String text = mainForm.getMainText(); 
+0

Сэр я бы как идти с тем, что вы предпочитаете, я не хочу писать. Вы сказали мне написать это: public 'String getMainText() { return t1.getText(); } 'в FormTTS Но что писать в FTall ??? так что переменная в FTall получает значение t1 из FormTTS –

+0

См. обновление ..... – MadProgrammer

+0

Сэр в строке 'String text = FormTTS.getMainText();' он показывает ошибку -> нестатический метод getMainText() не может ссылаться на статический контекст –

0

Если я понимаю ваш вопрос, попробуйте сначала, чтобы ваше текстовое поле попало в область до ac cess, и как только он войдет, используйте setter, чтобы установить его refrence в требуемом классе, тогда вы можете получить к нему доступ.

+0

Эй, я новичок, и не могу понять ни слова. сказал. пожалуйста, напишите –

+0

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

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