Toon posts:

[java] toont alleen de laatste regel v/h bestand

Pagina: 1
Acties:
  • 42 views sinds 30-01-2008

Verwijderd

Topicstarter
Beste mensen,

Ik ben inmiddels al een tijdje bezig om een programma te maken om een tekstbestandje uit te lezen. Ik ben nog super bekend met java, maar het gaat goed. Door dit programma steeds uit te breiden hoop ik op ten duur mijn einddoel te bereiken. Het is dus de bedoeling dat er een tekstbestand wordt uitgelezen en dat dit getoont wordt in outputArea, wat een JTextArea is. hij toont nu alleen het laatste getal. Het bestand moet wel ingelezen worden per regel, want op elke regel staat een getal. Met deze verschillende getallen wordt een berekening uitgevoerd. Hier zijn de bestanden:
file: FileDemonstrationTest
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package filedemo1;


import javax.swing.JFrame;

public class FileDemonstrationTest
{
   public static void main( String args[] )
   {
      FlowLayoutFrame flowLayoutFrame = new FlowLayoutFrame();
      flowLayoutFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      flowLayoutFrame.setSize( 300, 375 ); // set frame size
      flowLayoutFrame.setVisible( true ); // display frame


   } // end main
} // end class FlowLayoutDemo


file: FileReader

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package filedemo1;

import java.io.*;
import java.net.*;
import javax.swing.JTextArea;

//import filedemo1.FlowLayoutFrame;

public class FileReader implements Runnable
{
    private File file;
    private DataInputStream dataStreamIn;
    private boolean keepAlive;
    private Thread runner;


    public FileReader()
    {

        try
        {
            file = new File("c:\\numbers.txt");
            dataStreamIn = new DataInputStream(new FileInputStream(file));

            keepAlive = true;
            runner = new Thread(this);
            runner.start();
        }
        catch(IOException ioException) { ioException.printStackTrace(); }
    }

    public void run()
    {
        //FlowLayoutFrame flowLayoutFrame = new FlowLayoutFrame();
        try
        {
            while(keepAlive)
            {
                String input = dataStreamIn.readLine();
                if(input == null)
                    keepAlive = false;
                else
                {
                   
                    FlowLayoutFrame.outputArea.setText(String.format(input));
                   System.out.println(input);
                }
            }
        }
        catch(IOException ioException)
        {
            keepAlive = false;
            ioException.printStackTrace();
        }
    }

    public static void main(String[] args)
    {
        new FileReader();
    }
}


file:FlowLayoutFrame
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package filedemo1;

import java.awt.BorderLayout;
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.Container;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.*;
import java.awt.GridLayout;


public class FlowLayoutFrame extends JFrame
{
   private JButton leftJButton, centerJButton, rightJButton; // button to set alignment left
   private FlowLayout layout; // layout object
   private Container container; // container to set layout
   public static JTextArea outputArea; // used for output
   private JScrollPane scrollPane; // used to provide scrolling to output
   private JPanel panel, panel2, panel3;
   private JTextField invoer;
   private JLabel textarea;
   private File file;
   private DataInputStream dataStreamIn;
   private boolean keepAlive;
   private Thread runner;

   // set up GUI and register button listeners

   public FlowLayoutFrame()
   {
      super( "StudentPoll" );
      panel = new JPanel(); // set up panel
      panel2 = new JPanel(); // set up panel
      panel3 = new JPanel();
      panel.setLayout( new GridLayout());
      panel2.setLayout( new GridLayout());
      panel3.setLayout( new GridLayout());

      //layout = new FlowLayout(); // create FlowLayout
      //container = getContentPane(); // get container to layout
      //setLayout( layout ); // set frame layout
      //layout.setAlignment(FlowLayout.CENTER);

      // set up leftJButton and register listener
      leftJButton = new JButton( "open file" ); // create Left button
      panel2.add(leftJButton);
      leftJButton.addActionListener(

         new ActionListener() // anonymous inner class
         {
            // process leftJButton event
            public void actionPerformed( ActionEvent event )
            {
             FileReader filereader = new FileReader();
            } // end method actionPerformed
         } // end anonymous inner class
      ); // end call to addActionListener

      // set up centerJButton and register listener
      centerJButton = new JButton( "Save File" ); // create Center button
      panel2.add(centerJButton);
      centerJButton.addActionListener(

         new ActionListener() // anonymous inner class
         {
            // process centerJButton event
            public void actionPerformed( ActionEvent event )
            {
               layout.setAlignment( FlowLayout.CENTER );

               // realign attached components
               layout.layoutContainer( container );
            } // end method actionPerformed
         } // end anonymous inner class
      ); // end call to addActionListener

      // set up rightJButton and register listener
      rightJButton = new JButton( "Exit" ); // create Right button
      panel2.add(rightJButton);
      rightJButton.addActionListener(

         new ActionListener() // anonymous inner class
         {
            // process rightJButton event
            public void actionPerformed( ActionEvent event )
            {

            System.exit(0);

            } // end method actionPerformed
         } // end anonymous inner class
      ); // end call to addActionListener

      outputArea = new JTextArea();
      // add outputArea to scrollPane
      scrollPane = new JScrollPane( outputArea );
      panel.add( scrollPane ); // add scrollPane to GUI

      textarea = new JLabel("voer getal in");
      invoer = new JTextField();
      panel3.add(textarea);
      panel3.add(invoer);


      add(panel,BorderLayout.CENTER);
      add(panel2,BorderLayout.SOUTH);
      add(panel3,BorderLayout.NORTH);

        try {
            jbInit();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    } // end FlowLayoutFrame constructor

      private void jbInit() throws Exception {
    }

} // end class FlowLayoutFrame



Het probleem zit hem dus in ReadFile. Ik heb al gekeken of er een andere oplossing is dmv van een returnvalue en die dan te gebruiken in FlowLayoutFrame, maar dit kreeg ik niet werkende. Daarom probeer ik het nu op deze manier, wat dus bijna werkt, maar nog niet helemaal.

alvast bedankt voor de tips.

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 22:56

Gonadan

Admin Beeld & Geluid, Harde Waren
Je gebruikt setText() is append() niet een beter idee? :)

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
En nu wil jij dat er hier iemand zo goed is om jouw code te debuggen ? Dat is niet de bedoeling hier in PRG. Het is de bedoeling dat je zelf eerst eens je code debugt, ipv de hele lappen code hier te dumpen en het aan iemand anders over te laten.
Je IDE heeft vast wel de mogelijkheid om een breakpoint in je code te zetten, en dan stap voor stap door je code te stappen.

Het is trouwens logisch dat enkel de laatste regel getoond wordt..... Zet eens een breakpoint in je Run method, loop er eens stap voor stap door, en bekijk deze eens goed.

Het is natuurlijk de bedoeling dat je zelf eerst eens even je code debugged , alvorens het aan iemand anders over te laten.

[ Voor 11% gewijzigd door whoami op 11-04-2006 10:06 ]

https://fgheysels.github.io/


Dit topic is gesloten.