Toon posts:

[JAVA] van System.out.println naar Applet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Allereerst hallo,

Ik heb een probleem met java. Ik heb een script die data uit een database haalt en via de System.out.println in de console van Eclipse laat zien. Nu moet het ook te zien zijn voor de buiten wereld en dus in een HTML pagina. Het moet dus naar een Applet geschreven worden. Hier loop ik dus vast, ik krijg het met geen mogelijkheid voor elkaar, misschien dat iemand een idee heeft?

het script:

Java: uitvoer.java
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
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
import java.awt.*;
import java.applet.*;


public class DBuitvoer extends Applet
{

    /**
     * 
     */

    
    public void paint( Graphics g )
    {
        

    }
    
    private static final long serialVersionUID = 1L;
    public static void main(String[] args) 
    {

        // Laad eerst de driver.
        try 
        {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Laden van de driver is gelukt.");
        } 
        catch (ClassNotFoundException e) 
        {
            System.err.println("Kan de driver niet in de classpath vinden.");
            e.printStackTrace();
            return;
        }

        // Voorbereiding van de connectie. Gebruikersnaam, password en url kunt u hier aanpassen.
        Connection connection = null;
        String url = "jdbc:mysql://192.168.0.250/toetsgenerator?user=root&password=testserver";
        
        try 
        {
            // Verkrijg de connectie.
            connection = DriverManager.getConnection(url);

        } catch (SQLException e) {
            // Fout laten zien.
            System.out.println("Fout ontdekt met de connectie" + e.toString()); 
            e.printStackTrace();
        }
        
        try
        {
        Statement st = connection.createStatement();
        ResultSet rs = st.executeQuery( "SELECT * FROM users" );
        
        int x = 0;
        String[] tmpid = new String[50];
        String[] tmpname = new String[50];
        
        while( rs.next() )
        {
        String id = rs.getString( 1 );
        tmpid[x] = id;
        String name = rs.getString( 2 );
        tmpname[x] = name;
      
     
        x++;
        
    
        System.out.println ("id = " + id);
        System.out.println( "name = '" + name + "'" );
        System.out.println( "testarr = '" + tmpname[2] + "'" );
        
        } 
        }
        catch (SQLException e) {
            System.out.println("Fout ontdekt met de connectie" + e.toString()); 
            e.printStackTrace();
        }
        
    }
    //  Geef de connctie terug

    public Connection getConn()
    {
        Connection connection = null;
        return connection;
    }
}

  • asfaloth_arwen
  • Registratie: Februari 2005
  • Nu online
Textfield in applet om dit weer te geven?

Specs


Verwijderd

Topicstarter
Het gaat er dus om, hoe krijg ik die System.out.println als variable naar de public void paint.

  • asfaloth_arwen
  • Registratie: Februari 2005
  • Nu online
Je maakt een textfield in je applet, die je paint, vervolgens zet je nieuwe text erin (waar je nu System....) en repaint je?

Specs


Verwijderd

Topicstarter
Ik doe nu nog helemaal niks in de public void paint, want elke variable die ik met g.drawString neer probeer te zetten werkt niet.

Dan heb ik het dus over id, name, tmpname

Ik kan die System.out.println ook niet als variable gebruiken en ook niet in een textfield stoppen.

Die 3 variabelen moet dus naar de paint toe, gewoon id wordt niet herkent als variable, main(id) ook niet.

  • asfaloth_arwen
  • Registratie: Februari 2005
  • Nu online
Oke nog 1 keer stap voor stap:

1) maak textfield
2) remove system.out.bla
3) zet ( "id = " + id ) etc. naar het textfield
4) repaint

Google anders eens op (java) applet textfield oid, dan zie je code voorbeeld

[ Voor 23% gewijzigd door asfaloth_arwen op 14-05-2007 20:15 ]

Specs


  • DutchCommando
  • Registratie: November 2000
  • Laatst online: 01-12 17:57
System.setOut()

Daarmee moet het lukken. Succes :).

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:51

Robtimus

me Robtimus no like you

Als je die System.out's niet kunt vervangen is er nog een optie.

Maak een specifieke OutputStream die het werk voor je doet. Je hoeft hiervoor alleen de write(int) method te implementeren, maar vanwege performance doeleinden kun je wellicht ook de andere write methods overriden. Een voorbeeld van mij die naar een JTextArea print:
Java:
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
public class TextAreaOutputStream extends OutputStream {
    public static final int BUFFER_SIZE = 32;
    
    private JTextArea text;
    
    private byte[] buffer;
    
    private int count;

    public TextAreaOutputStream(JTextArea text) {
        this(text, BUFFER_SIZE);
    }
    
    public TextAreaOutputStream(JTextArea text, int size) {
        super();
        this.text = text;
        if (size < 1) {
            throw new IllegalArgumentException("Cannot use empty buffer"); 
        }
        buffer = new byte[size];
        count = 0;
    }

    public synchronized void write(int b) {
        buffer[count] = (byte)b;
        count++;
        if (count == buffer.length)
        {
            // force a flush
            flush();
        }
    }
    
    public synchronized void flush() {
        if (count > 0) {
            text.append(new String(buffer, 0, count));
            count = 0;
        }
    }
}

Vervolgens prop je die in een PrintStream, die je weer aan System.out assigned:
Java:
1
2
3
OutputStream os = new TextAreaOutputStream(textArea);
PrintStream ps = new PrintStream(os);
System.setOut(ps);

Hierna gaat alles dat normaal naar System.out zou gaan naar de aangegeven text area. Je kunt natuurlijk elke OutputStream hiervoor gebruiken.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:32

Janoz

Moderator Devschuur®

!litemod

Een applet is trouwens anders opgebouwd dan een gewoone applicatie. Bij een gewone applicatie heb je inderdaad gewoon een main die als eerste aangeroepen wordt. Bij een applet wordt echter de init en de start methode aangeroepen. In deze methoden zul je je logica moeten implementeren.

System.out.println werkt trouwens nog steeds hoor, het komt echter in de javaconsole terecht (Deze kun je oproepen via de rechter muisknop op het java icoontje of via de opties in de browser). Waarom wil je trouwens een applet gebruiken om je data te laten zien? Ik neem aan dat dit vooral voor de spielerei is. Een dergelijke structuur is in het echt natuurlijk compleet onwenselijk tenzij je er geen problemen mee hebt dat de gehele wereld volledige toegang heeft tot je database.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:51

Robtimus

me Robtimus no like you

Hou er trouwens ook erg goed rekening mee dat een Applet standaard maar weinig mag. Het lokale filesystem is off limits, en ook servers (zoals je SQL server) werken in 99.99% van de gevallen niet zonder eerst de permissies goed te zetten.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 27-11 16:36
IceManX schreef op maandag 14 mei 2007 @ 22:14:
Hou er trouwens ook erg goed rekening mee dat een Applet standaard maar weinig mag. Het lokale filesystem is off limits, en ook servers (zoals je SQL server) werken in 99.99% van de gevallen niet zonder eerst de permissies goed te zetten.
Letterlijk gezien is dat percentage van je nog kleiner. Maar de regel is zeer simpel. Een Applet mag enkel naar de originating host connecten. Maar naar die originating host mag je letterlijk ieder willekeurig protocol praten. Een database connectie maken moet dus geen enkel probleem zijn.

Echter een database wil je niet direct aan het internet hangen. (Hint: XML-RPC interface.)

Kijk hier voor een snel overzicht: http://java.sun.com/sfaq/

Verwijderd

Topicstarter
Ik heb het al opgelost, ik heb er gewoon 1 Applet van gemaakt en van de System.out.println een g.drawString gemaakt. Het zal vast wel anders of mooier kunnen, maar ik ben blij dat het werkt zo.

En spielerei... meer een soort van weddenschap en mn gelijk krijgen.

Maar goed het is opgelost dus.
Pagina: 1