2016-07-22 2 views
0
public void actionPerformed(ActionEvent e) { 
    s = tf1[0].getText(); 
} 

Я хочу, чтобы сохранить ввод текста я получаю от tf1[0].getText(); к String s и вызвать s в моей основной, или в другом классе, но я получаю нуль назад вместо этого. Есть ли способ вызвать s в другом классе?Java: Сохранение TextField для строки, используемой в другом классе

это остальная часть кода:

public class GUI { 

static String s; 
public static void gui(){ 

    { 
     try{ 
     String File_Name="C:/Users/Ray/Desktop/test.txt"; 
     ReadFile rf=new ReadFile(File_Name); 
     JFrame f1=new JFrame("Maintest"); 
     JPanel p1=new JPanel(); 
     JPanel p2=new JPanel(); 
     final String[] aryLines=rf.OpenFile(); 
     final JTextField tf1[]; 
     tf1=new JTextField[22]; 
     JButton []b1=new JButton[6]; 
     String bNames="OK"; 
     final JTextField tf2[]=new JTextField[aryLines.length]; 
     f1.setSize(200,450); 


     JLabel l1[]=new JLabel[20]; 

     for (int i=0; i < aryLines.length; i++) 
     { 
      b1[i]=new JButton(bNames); 
      l1[i]=new JLabel("Enter Serial# for "+ aryLines[i]); 

      p1.add(l1[i]);p1.add(tf1[i] = new JTextField());p1.add(b1[i]); 
     } 


      p1.setLayout(new BoxLayout(p1,BoxLayout.PAGE_AXIS)); 

      f1.add(p1,BorderLayout.WEST); 



       b1[0].addActionListener(new ActionListener(){ 
       private String s2; 

       public void actionPerformed(ActionEvent e) 
       { 

        s=tf1[0].getText(); 
        System.out.print(s); 

       } 


       }); 

      f1.show(); 
     } 

      catch(Exception e) 
      { 
       System.out.print(e); 
      } 

    } 
} 


} 
+0

Под «называют» вы имеете в виду вас хотите получить содержимое 's'? –

+0

@AndreasFester да, я хочу получить значение 's'. – Commongrate

+1

Я считаю, что вы написали больше кода, чем вы нам показали. Не могли бы вы показать немного больше? – xenteros

ответ

1

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

public String getS(){ 
    return this.s; 
} 

И здесь:

public void actionPerformed(ActionEvent e) { 
    this.s = tf1[0].getText(); 
} 

Затем в другом классе нуждающейся s, вы должны создать экземпляр Класс, содержащий s и вызов:

String s2 = instantiatedObject.getS(); 

Если вы чувствуете, становится немного рискованным, вы можете сделать «s» статическая переменная, и вы можете просто назвать ее в любом месте вы экземпляр класса, содержащий «S»:

String s2 = instantiatedObject.s; 
+0

Извините, но я немного медленный, что такое 'instantiatedObject' здесь:' String s2 = instantiatedObject.getS(); ' – Commongrate

+0

Везде, где вы создаете экземпляр класса GUI, вы можете использовать метод getter:' GUI g = new GUI(); 'и затем используйте' g.getS(); 'и вы можете получить значение в« s ». –

+0

Я предполагаю, что это вместо этого: 'GUI instantiatedObject = new GUI();' –

0

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

public static String s; 

public void actionPerformed(ActionEvent e) { 
    s = tf1[0].getText(); 
} 

public static String getYourString() { 
    return s; 
} 
Смежные вопросы