Avatar billede brian8 Nybegynder
22. juli 2002 - 16:56 Der er 10 kommentarer og
1 løsning

Hvad er fejlen i disse koder????

Fejlen er at filen ikke bliver udskrevet i tekstfeltet. Men hvorfor ikke ???? hjælp :)

Her kommer de 3 class´er

import java.io.*;

public class laes_fil
{
        public void readF()
        throws java.io.IOException   
        {    
                System.out.println("readF er aktiveret");
                gui GUI = new gui();
                String     line;
                String     fil;
                fil =  GUI.txtFilvisningsfelt.getText();
                System.out.println(fil);
                   
         
                try
                {
                    BufferedReader bufferedReader = new BufferedReader(new FileReader(fil));
         
                    while((line = bufferedReader.readLine()) != null)
                    {
                        GUI.txtFilvisningsfelt.append(""+line+"\n");
                        System.out.println("så skulle der være sat det ind i txt");
                    }
                    System.out.println("try er færdig");
                bufferedReader.close();
                }
                  catch(Exception e)
                {
                  System.err.println("--> "+e);
                }
        }
}



import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class gui extends JFrame implements ActionListener
{
        private JButton     cmdLaesFil;
        private JButton        cmdGem;
        public  JTextArea     txtFilvisningsfelt;
        private JTextArea    txtFilNavn;
        private JLabel        lblFilLabel;
        private JPanel         vaerktoejsLiniePanel;
        private JPanel        tekstfeltPanel;
        private JPanel        app;
   
   
    public gui()
    {
        super("File reader");
        setSize (700, 700);
       
//****************************************************************************************
// Opretter de enkelte komponenter
//****************************************************************************************       
        cmdLaesFil                 = new JButton("Læs fil");
        cmdGem                    = new JButton("Gem");
       
        txtFilvisningsfelt         = new JTextArea(50,50);
        txtFilNavn                = new JTextArea(1,20);
   
        lblFilLabel                = new JLabel("Indtast et filnavn");
       
        vaerktoejsLiniePanel    = new JPanel();
        tekstfeltPanel            = new JPanel();
        app                        = new JPanel();
       
       
       
        cmdGem.setToolTipText("Klik her for at gemme det indtastede i en fil");
        cmdLaesFil.setToolTipText("Klik her for at få vist den indtastede fil´s indhold");
//****************************************************************************************
// Opretter layout og indsætter komponenter i panelen
//****************************************************************************************       
       
        //vaerktoejsLiniePanel.setLayout(new BoxLayout(vaerktoejsLiniePanel, BoxLayout.X_AXIS));
        vaerktoejsLiniePanel.add(cmdGem);
        vaerktoejsLiniePanel.add(lblFilLabel);
        vaerktoejsLiniePanel.add(txtFilNavn);
        vaerktoejsLiniePanel.add(cmdLaesFil);
       
        tekstfeltPanel.add(txtFilvisningsfelt);
       
        app.setLayout(new BorderLayout(15,10));
        app.add(vaerktoejsLiniePanel, BorderLayout.NORTH);
        app.add(tekstfeltPanel, BorderLayout.CENTER);
       
        setContentPane (app);
       
//****************************************************************************************
// Tilkobler actionlistner til knapperne
//****************************************************************************************
        cmdLaesFil.addActionListener(this);
    }
   
//****************************************************************************************
// Metoden som aktiveres når der klikkes på knappen Gem og Læs fil
//****************************************************************************************   
    public void actionPerformed(ActionEvent e) 
    {
        laes_fil lf = new laes_fil();
        try
        {
        lf.readF();
        }
        catch(IOException ioe)
        {
            System.err.println("fejl\n"+ioe);
            System.exit(1);
            System.out.println("fejl");
        }
        System.out.println("Knappen er aktiveret");
    }
}



public class start
{
    public static void main(String args[])
    {
        gui g = new gui();
        g.setVisible(true);
    }
}
Avatar billede soelvpil Nybegynder
22. juli 2002 - 18:10 #1
Får du noget output fra din System.out inde i while-løkken?

Prøv evt med

  while(bufferedReader.isReady())
  {
    GUI.txtFilvisningsfelt.append(""+bufferedeader.readLine()+"\n");
    System.out.println("så skulle der være sat det ind i txt");
  }
Avatar billede brian8 Nybegynder
22. juli 2002 - 18:19 #2
nej ingen output fra System.out i while-løkken
Avatar billede magoo20000 Nybegynder
22. juli 2002 - 18:46 #3
Hov hov! Du kalder new gui() 2 gange!!
I laes_fil og start!
Avatar billede magoo20000 Nybegynder
22. juli 2002 - 18:52 #4
Det her virker, hvis du opretter en fil som c:\txt.java !!

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class gui extends JFrame implements ActionListener
{
        private JButton    cmdLaesFil;
        private JButton        cmdGem;
        private  JTextArea    txtFilvisningsfelt;
        private JTextArea    txtFilNavn;
        private JLabel        lblFilLabel;
        private JPanel        vaerktoejsLiniePanel;
        private JPanel        tekstfeltPanel;
        private JPanel        app;
   
   
    public gui()
    {
        super("File reader");
        setSize (700, 700);
       
//****************************************************************************************
// Opretter de enkelte komponenter
//****************************************************************************************       
        cmdLaesFil                = new JButton("Læs fil");
        cmdGem                    = new JButton("Gem");
       
        txtFilvisningsfelt        = new JTextArea(50,50);
        txtFilNavn                = new JTextArea(1,20);
   
        lblFilLabel                = new JLabel("Indtast et filnavn");
       
        vaerktoejsLiniePanel    = new JPanel();
        tekstfeltPanel            = new JPanel();
        app                        = new JPanel();
        txtFilvisningsfelt.append("hhhh");
       
       
        cmdGem.setToolTipText("Klik her for at gemme det indtastede i en fil");
        cmdLaesFil.setToolTipText("Klik her for at få vist den indtastede fil´s indhold");
//****************************************************************************************
// Opretter layout og indsætter komponenter i panelen
//****************************************************************************************       
       
        //vaerktoejsLiniePanel.setLayout(new BoxLayout(vaerktoejsLiniePanel, BoxLayout.X_AXIS));
        vaerktoejsLiniePanel.add(cmdGem);
        vaerktoejsLiniePanel.add(lblFilLabel);
        vaerktoejsLiniePanel.add(txtFilNavn);
        vaerktoejsLiniePanel.add(cmdLaesFil);
       
        tekstfeltPanel.add(txtFilvisningsfelt);
       
        app.setLayout(new BorderLayout(15,10));
        app.add(vaerktoejsLiniePanel, BorderLayout.NORTH);
        app.add(tekstfeltPanel, BorderLayout.CENTER);
       
        setContentPane (app);
       
//****************************************************************************************
// Tilkobler actionlistner til knapperne
//****************************************************************************************
        cmdLaesFil.addActionListener(this);
    }
   
//****************************************************************************************
// Metoden som aktiveres når der klikkes på knappen Gem og Læs fil
//****************************************************************************************   
    public void addTilFelt(String s){
        System.out.println("-<-<-<- "+s);
        txtFilvisningsfelt.append(s);
    }
         
 
    public void actionPerformed(ActionEvent e) 
    {
        if(e.getSource() == cmdLaesFil){
           
        laes_fil lf = new laes_fil();
        try
        {
        lf.readF();
        }
        catch(IOException ioe)
        {
            System.err.println("fejl\n"+ioe);
          // System.exit(1);
            System.out.println("fejl");
        }
        System.out.println("Knappen er aktiveret");
}
    }
}

import java.io.*;

public class laes_fil


        public laes_fil(){
            try{
            readF();
        }
        catch (Exception e){}
        }
       
       
       
        public void readF() throws java.io.IOException   
        {   
                System.out.println("readF er aktiveret");
                gui GUI = new gui();
                GUI.show();
                String    line;
                String    fil;
                fil =  "c:\\txt.java";  //GUI.txtFilvisningsfelt.getText();
                System.out.println(fil);
                   
         
                try
                {
                    BufferedReader bufferedReader = new BufferedReader(new FileReader(fil));
         
                    while((line = bufferedReader.readLine()) != null)
                    {
                        GUI.addTilFelt(line);
                        System.out.println(line+ "så skulle der være sat det ind i txt");
                    }
                    System.out.println("try er færdig");
                bufferedReader.close();
                }
                  catch(Exception e)
                {
                  System.err.println("--> "+e);
                }
        }
}


public class start
{
    public static void main(String args[])
    {
        laes_fil lf = new laes_fil();
    }
}
Avatar billede magoo20000 Nybegynder
22. juli 2002 - 18:53 #5
Jeg finpudser den lige...
Avatar billede soelvpil Nybegynder
22. juli 2002 - 19:00 #6
Hvad så med

JTextArea felt = GUI.txtFilvisningsfelt;
String fil =  felt.getText();
felt.append("Prøver at læse fra fil...\n");
try
{
  BufferedReader reader = new BufferedReader(new FileReader(fil));
  felt.append("Åbnet:"+reader.isReady());
  while(reader.isReady())
  {
    felt.append(reader.readLine()+"\n");
    System.out.println("så skulle der være sat det ind i txt");
  }
  System.out.println("try er færdig");
  bufferedReader.close();
}
catch(Exception e)
{
  felt.append(e.getMessage());
  System.err.println("--> "+e);
}
Avatar billede brian8 Nybegynder
22. juli 2002 - 19:03 #7
maqoo2000: Men det gør da ikke noget. Det bliver jeg jo nød.
Avatar billede magoo20000 Nybegynder
22. juli 2002 - 19:16 #8
public class start
{
    public static void main(String args[])
    {
        laes_fil lf = new laes_fil();
    }
}

OG

import java.io.*;

public class laes_fil { 
private gui GUI;

        public laes_fil(){
            try{
           
                GUI = new gui(this);
                GUI.show();
            //    readF();
                }
            catch (Exception e){}
            }
       
        public void readF() throws java.io.IOException{   
                System.out.println("readF er aktiveret"); 
                String    line;
                String    fil;
                fil =  GUI.getLokationAfFil();
                System.out.println(fil);
                   
         
                try
                {
                    BufferedReader bufferedReader = new BufferedReader(new FileReader(fil));
         
                    while((line = bufferedReader.readLine()) != null)
                    {
                        GUI.addTilFelt(line);
                        System.out.println(line+ "så skulle der være sat det ind i txt");
                    }
                    System.out.println("try er færdig");
                bufferedReader.close();
                }
                  catch(Exception e)
                {
                  System.err.println("--> "+e);
                }
        }
}


OG

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class gui extends JFrame implements ActionListener
{
        private JButton    cmdLaesFil;
        private JButton        cmdGem;
        private  JTextArea    txtFilvisningsfelt;
        private JTextArea    txtFilNavn;
        private JLabel        lblFilLabel;
        private JPanel        vaerktoejsLiniePanel;
        private JPanel        tekstfeltPanel;
        private JPanel        app;
        private laes_fil lf;
   
   
    public gui(laes_fil lf)
    {
   
        super("File reader");
   
        System.out.println("kæjhj.k");
        setSize (700, 700);
        this.lf = lf;
       
//****************************************************************************************
// Opretter de enkelte komponenter
//****************************************************************************************       
        cmdLaesFil                = new JButton("Læs fil");
        cmdGem                    = new JButton("Gem");
       
        txtFilvisningsfelt        = new JTextArea(50,50);
        txtFilNavn                = new JTextArea(1,20);
   
        lblFilLabel                = new JLabel("Indtast et filnavn");
       
        vaerktoejsLiniePanel    = new JPanel();
        tekstfeltPanel            = new JPanel();
        app                        = new JPanel();
        txtFilvisningsfelt.append("hhhh");
       
       
        cmdGem.setToolTipText("Klik her for at gemme det indtastede i en fil");
        cmdLaesFil.setToolTipText("Klik her for at få vist den indtastede fil´s indhold");
//****************************************************************************************
// Opretter layout og indsætter komponenter i panelen
//****************************************************************************************       
       
        //vaerktoejsLiniePanel.setLayout(new BoxLayout(vaerktoejsLiniePanel, BoxLayout.X_AXIS));
        vaerktoejsLiniePanel.add(cmdGem);
        vaerktoejsLiniePanel.add(lblFilLabel);
        vaerktoejsLiniePanel.add(txtFilNavn);
        vaerktoejsLiniePanel.add(cmdLaesFil);
       
        tekstfeltPanel.add(txtFilvisningsfelt);
       
        app.setLayout(new BorderLayout(15,10));
        app.add(vaerktoejsLiniePanel, BorderLayout.NORTH);
        app.add(tekstfeltPanel, BorderLayout.CENTER);
       
        setContentPane (app);
       
//****************************************************************************************
// Tilkobler actionlistner til knapperne
//****************************************************************************************
        cmdLaesFil.addActionListener(this);
    }
   
//****************************************************************************************
// Metoden som aktiveres når der klikkes på knappen Gem og Læs fil
//****************************************************************************************   
    public void addTilFelt(String s){
        txtFilvisningsfelt.append(s+"\n");
    }
         
    public String getLokationAfFil(){
        return txtFilNavn.getText();
    }
   
 
    public void actionPerformed(ActionEvent e) 
    {
        if(e.getSource() == cmdLaesFil){
           
        try
        {
        lf.readF();
        }
        catch(IOException ioe)
        {
            System.err.println("fejl\n"+ioe);
          // System.exit(1);
            System.out.println("fejl");
        }
        System.out.println("Knappen er aktiveret");
}
    }
}

Virker tilfredsstillende vil jeg mene, men det er nok ikke den pæneste kode i   
verden*G*
Avatar billede soelvpil Nybegynder
22. juli 2002 - 19:31 #9
Nå ja, det er selvfølgelig new gui() den er gal med.

Det letteste må da være at din readF-metode tager GUI-objektet som
argument (og lader være med at lave new gui()).

Dvs

      public void readF(gui GUI)
        throws java.io.IOException   
        {   
                System.out.println("readF er aktiveret");
                String    line;
                String    fil;
                fil =  GUI.txtFilvisningsfelt.getText();

og i den anden klasse

  public void actionPerformed(ActionEvent e) 
    {
        laes_fil lf = new laes_fil();
        try
        {
        lf.readF(this);
Avatar billede brian8 Nybegynder
22. juli 2002 - 19:33 #10
Mange tak for hjælpen magoo20000. Nu er jeg glad igen. Det virker jo fint:)
Du fortjæner da dine points.
Avatar billede brian8 Nybegynder
23. juli 2002 - 13:56 #11
he he hov stave kan jeg heller ikke :)
fortjæner = fortjener
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester