2016-06-30 7 views
0

Wie die Frage besagt, habe ich eine Textdatei. Innerhalb dieser Textdatei befinden sich einige Zeilen Text, und ich möchte meine textArea mit diesen Daten füllen, wenn der JFrame gestartet wird.TextArea eines JFrame auf Daten aus einer Datei setzen?

public static void main(String args[]) throws IOException { 

    FileReader reader = new FileReader("C:/filepathchangedforStackOverflow"); 
    BufferedReader br = new BufferedReader(reader); 
    resultBox.read(br, null); 
    br.close(); 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new RemoteDesktop().setVisible(true); 

      } 
     }); 
    } 

Der Fehler ist auf resultBox.read(br, null); wie es sagt, dass non-static variable resultBox cannot be referenced from a static context.

Ich habe überall gesucht und bin nicht etwas zu finden. Es scheint einfach genug, ich weiß nicht, warum es nicht funktioniert.

+0

Kann Variablendeklaration von 'resultBox' teilen? –

+0

private javax.swing.JTextArea resultBox; –

Antwort

1

Versuchen Sie folgendes:

Klasse Haupt

{

static JFrame frame=new JFrame(); 
static JPanel panel=new JPanel(); 
private static void display(JFrame frame) throws IOException 
    { 
     JFileChooser chooser = new JFileChooser(); 
     int returnVal = chooser.showOpenDialog(null); 
     File file = null; 
     if(returnVal == JFileChooser.APPROVE_OPTION)  
     file = chooser.getSelectedFile();  
     JTextArea text = new JTextArea(); 
     BufferedReader in = new BufferedReader(new FileReader(file)); 
     String line = in.readLine(); 
     while(line != null) 
      { 
       text.append(line + "\n"); 
       line = in.readLine(); 
      } 
     panel.add(text); 
     frame.add(panel); 
    } 
public static void main(String args[]) throws IOException 
{ 
    frame. setTitle("Simple example"); 
    frame.setSize(500, 500); 
    display(frame); 
    frame.setVisible(true); 
} 

}

1

Sie müssen ein Objekt der Klasse erstellen, die die Variable resultBox enthält. Greifen Sie nun auf die Variable resultBox unter Verwendung der Referenzvariablen des Objekts der Klasse zu. Zum Beispiel, wenn Klassenname ist Test, dann:

Test test=new Test();

test.resultBox.read (br, null);

Könnten Sie bitte Schritte unten und sehen Sie die Ergebnisse genannt:

Schritt 1: Erstellen Sie eine Textdatei, deren Pfad : "D:\\test.txt"

Schritt 2: Ersetzen Sie Ihre public static void main(String args[]) mit den folgenden:

public static void main(String[] args) throws IOException {  
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       RemoteDesktop rd=new RemoteDesktop(); 
       FileReader fr=null; 
       try { 
        fr = new FileReader("D:\\test.txt"); 
        rd.resultBox.read(fr, "Test"); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       }finally{ 
        if(fr!=null){ 
         try { 
          fr.close(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
       rd.setSize(600, 400); 
       rd.setLocationRelativeTo(null); 
       rd.setVisible(true); 
      } 
     }); 
    } 
+0

Ich habe die resultBox nirgendwo deklariert. Ich habe den Control einfach in die Design-Ansicht von NetBeans gezogen. –

+0

Bitte sehen Sie meine bearbeitete Antwort. –

+0

Das hat meinen Fehler behoben! Danke (ps. Zeigt noch keine Daten an, aber das könnte ein anderes Problem sein) –

Verwandte Themen