Avatar billede mik28 Seniormester
01. maj 2006 - 19:31 Der er 71 kommentarer og
1 løsning

Applet som skal opdaterer sig selv

Hej Eksperter,

Jeg har en applet som jeg vil have til at opdatere sig selv, sådan at forstå at den med visse intervaller skal slå op i en database. Jeg har prøvet at gøre således:

    public void init() {
        //Execute a job on the event-dispatching thread:
        //creating this applet's GUI.
        try{
           
            Thread.sleep(1000);
       
            try {
                javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
                    public void run() {
                        createGUI();
                    }
                });
            } catch (Exception e) {
                System.err.println("createGUI didn't successfully complete");
            }
       
        }catch (InterruptedException e){}
Avatar billede stephanryer Nybegynder
01. maj 2006 - 20:13 #1
dette løses således:

public void init() {
    int refreshRate = 1000;
    Timer timer = new Timer(refreshRate, new ActionListener(){
        public void actionPerformed(ActionEvent e){
            //Check database her
        }
    });
    timer.start();
}

Timer er swings
Avatar billede stephanryer Nybegynder
01. maj 2006 - 20:16 #2
javax.swing.Timer for at være helt præcis.

Timeren har constructoren der ser således ud: Timer(int refreshrate, ActionListener a);

Denne actionlistener oprettes son anonym innerklasse, hvilket vil sige at den oprettes i det øjeblik den gives med som parameter.
Avatar billede stephanryer Nybegynder
01. maj 2006 - 20:17 #3
efter timer.start(); vil alt hvad der står istedet for "//Check database her" blive udført engang hvert 1000. milisekund (hvert sekund).
Avatar billede mik28 Seniormester
01. maj 2006 - 20:33 #4
Spændende. Jeg er ikke helt sikker på havd jeg skal gøre. Jeg skal vel kun have en init metode. Skal jeg så bare lægge

try {
                javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
                    public void run() {
                        createGUI();
                    }
                });
            } catch (Exception e) {
                System.err.println("createGUI didn't successfully complete");
            }

ind i "check database". createGUI(); bygger mit interface op
Avatar billede stephanryer Nybegynder
01. maj 2006 - 20:37 #5
nej du skal bare gøre sådan her:

public void init() {
    int refreshRate = 1000;
    Timer timer = new Timer(refreshRate, new ActionListener(){
        public void actionPerformed(ActionEvent e){
            createGUI();
        }
    });
    timer.start();
}
Avatar billede mik28 Seniormester
01. maj 2006 - 20:41 #6
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.util.*;
import java.sql.*;

import util.*;

public class Frugt extends JApplet{
   
    public void init() {
    int refreshRate = 1000;
    Timer timer = new Timer(refreshRate, new ActionListener(){
        public void actionPerformed(ActionEvent e){
            createGUI();
        }
    });
    timer.start();
}
Avatar billede mik28 Seniormester
01. maj 2006 - 20:41 #7
Hvad er der galt med det :-)
Avatar billede mik28 Seniormester
01. maj 2006 - 20:42 #8
Det ser således ud lige nu

import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.util.*;
import java.sql.*;

import util.*;

public class Frugt extends JApplet {
   
        public void init() {
        //Execute a job on the event-dispatching thread:
        //creating this applet's GUI.
        try {
            javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    createGUI();
                }
            });
        } catch (Exception e) {
            System.err.println("createGUI didn't successfully complete");
        }
    }
Avatar billede stephanryer Nybegynder
01. maj 2006 - 20:43 #9
Du skal også have en createGUI-metode inde i Frugt-klassen går jeg ud fra :)

public class Frugt extends JApplet{
   
    public void init() {
    int refreshRate = 1000;
    Timer timer = new Timer(refreshRate, new ActionListener(){
        public void actionPerformed(ActionEvent e){
            createGUI();
        }
    });
    timer.start();
    }

    private void createGUI(){
      //Lav guiting her.
    }
}

Bemærk at jeg har sat et ekstra { efter timer.start(); hvilket manglede.
Avatar billede stephanryer Nybegynder
01. maj 2006 - 20:44 #10
Det den gør nu er at køre createGUI() hvert sekund.
Avatar billede mik28 Seniormester
01. maj 2006 - 20:47 #11
Det er det jeg prøver. Jeg får en fejl der siger at timer er ambigious
Avatar billede _carsten Nybegynder
01. maj 2006 - 20:52 #12
Det er fordi du har følgende import stmt i filen

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


Du er nødt til at gøre sådan

javax.swing.Timer timer = new Timer(refreshRate, new ActionListener(){
.....
Avatar billede _carsten Nybegynder
01. maj 2006 - 20:53 #13
:)
Forkert copy/paste

årsag
import java.util.*;
import javax.swing.*;
Avatar billede stephanryer Nybegynder
01. maj 2006 - 20:59 #14
ohhh ja. der findes både en javax.swing.Timer og en java.awt.Timer

min fejl :)
Avatar billede mik28 Seniormester
01. maj 2006 - 21:03 #15
No worries. Så vidt jeg ved bruger jeg kun Vector fra java.util. Så jeg prøvede med import java.util.Vector; Det compilerede men det virkede ikke :-(
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:05 #16
det er javax.swing.* du skal fjerne.

og så skriver javax.swing.Timer timer = new javax.swing.Timer(...)
Avatar billede mik28 Seniormester
01. maj 2006 - 21:08 #17
Det kan jeg da ikke :-)
Avatar billede mik28 Seniormester
01. maj 2006 - 21:08 #18
public class Frugt extends JApplet {
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:10 #19
Sådan her gør du:

public class Frugt extends JApplet{
   
    public void init() {
    int refreshRate = 1000;
    javax.swing.Timer timer = new javax.swing.Timer(refreshRate, new ActionListener(){
        public void actionPerformed(ActionEvent e){
            createGUI();
        }
    });
    timer.start();
    }

    private void createGUI(){
      //Lav guiting her.
    }
}
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:11 #20
du kan godt lade

javax.swing.*

blive stående.
Avatar billede mik28 Seniormester
01. maj 2006 - 21:15 #21
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import java.util.*;
import java.sql.*;

import util.*;

public class Frugt extends JApplet {
   
   
   
    public void init() {
    int refreshRate = 1000;
    javax.swing.Timer timer = new javax.swing.Timer(refreshRate, new ActionListener(){
        public void actionPerformed(ActionEvent e){
            createGUI();
        }
    });
    timer.start();
    }

   
    void buildConstraints(GridBagConstraints gbc, int gx, int gy,
        int gw, int gh, int wx, int wy) {

        gbc.gridx = gx;
        gbc.gridy = gy;
        gbc.gridwidth = gw;
        gbc.gridheight = gh;
        gbc.weightx = wx;
        gbc.weighty = wy;
       
       
    }
   
    private void createGUI() {
       
        // Set generelle værdier for panelet
       
        GridBagLayout gridbag = new GridBagLayout();
        GridBagConstraints constraints = new GridBagConstraints();
        JPanel pane = new JPanel();
        pane.setLayout(gridbag);
        pane.setBackground(Color.green);
        JLabel l;
       
       
        // Overskrift
        buildConstraints(constraints, 0, 0, 1, 1, 100, 100);
        constraints.fill = GridBagConstraints.NONE;
        constraints.anchor = GridBagConstraints.WEST;
        l = new JLabel(" Navn", JLabel.LEFT);
        gridbag.setConstraints(l, constraints);
        pane.add(l);
       
        // Overskrift
        buildConstraints(constraints, 1, 0, 1, 1, 100, 100);
        constraints.fill = GridBagConstraints.HORIZONTAL;
        l = new JLabel("Antal");
        gridbag.setConstraints(l, constraints);
        pane.add(l);
       
        Databaseforbindelsemysqlprepared d = new Databaseforbindelsemysqlprepared("com.mysql.jdbc.Driver", "jdbc:mysql://web-oasen.dk/DATABASE", "BRUGER", "PASSWORD");
       
        Vector vi = new Vector();
        // vi.addElement(user);
        StringBuffer bu = new StringBuffer();
                    bu.append("select * from varer");
                           
        ResultSet rs = d.select(bu.toString(), vi);
       
        int i = 1; // Placerer værdier i gridbacklayoutet
       
        try {
       
               
                while (rs.next()) {
               
                // Navn
                buildConstraints(constraints, 0, i, 1, 1, 100, 100);
                constraints.fill = GridBagConstraints.NONE;
                constraints.anchor = GridBagConstraints.WEST;
                l = new JLabel(rs.getString("navn"), JLabel.LEFT);
                gridbag.setConstraints(l, constraints);
                pane.add(l);
                   
                // Antal på lager
                buildConstraints(constraints, 1, i, 1, 1, 100, 100);
                constraints.fill = GridBagConstraints.HORIZONTAL;
                l = new JLabel(rs.getString("antal"));
                gridbag.setConstraints(l, constraints);
                pane.add(l);
               
                i++;
           
                }
       
       
        setContentPane(pane);   

       
        } catch (SQLException s) {
                System.out.println("<h3>SQL fejl: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }
           
        d.close();
       
        }
     
       
}
Avatar billede mik28 Seniormester
01. maj 2006 - 21:16 #22
det virker altså ikke
Avatar billede _carsten Nybegynder
01. maj 2006 - 21:17 #23
Her er et eksempel med en timer og tråd

Kig på metoden runTimer()



import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class TimerTest extends javax.swing.JFrame {

    public TimerTest() {
        initComponents();
    }

    private void initComponents() {
        val = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();

        getContentPane().setLayout(new java.awt.FlowLayout());

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        val.setColumns(10);
        getContentPane().add(val);

        jButton1.setText("Start timer");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                runTimer(evt);
            }
        });

        getContentPane().add(jButton1);

        pack();
    }

    private void runTimer(java.awt.event.ActionEvent evt) {
        val.setText("0");
       
        task = new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                int i = Integer.parseInt(val.getText());
                val.setText("" + (i+1));
            }
        };
       
       
       
        Thread t = new Thread(){
            public void run(){
                timer = new javax.swing.Timer(delay, task);
                timer.start();
            }
        };
        t.start();
    }
   

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TimerTest().setVisible(true);
            }
        });
    }
   
    private int delay = 500;
    private ActionListener task;
    private javax.swing.Timer timer;
    private javax.swing.JButton jButton1;
    private javax.swing.JTextField val;
}
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:18 #24
fjern import util.*; med mindre du har en hjemmelavet package med dette navn.

Hvilken fejl får du?
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:20 #25
Ingen grund til at gøre koden større end nødvendigt. Timer gør præcis det samme og skal ikke startes fra en anden tråd som du gør i dit eksempel Carsten. Timeren kører i en anden tråd i forvejen.
Avatar billede mik28 Seniormester
01. maj 2006 - 21:20 #26
det har jeg. Jeg får ingen fejl. Det virker bare ikke.

Du kan se det her.

<HTML>
<HEAD>
</HEAD>
<BODY>
<CENTER>
<applet
width="200"
height="400"
codebase="http://web-oasen.dk/applets"
code="Frugt.class"
archive="classes.jar">
</applet>

</CENTER>
</BODY>
</HTML>
Avatar billede _carsten Nybegynder
01. maj 2006 - 21:20 #27
Du kan vel egentlig copy/paste metoden

        task = new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                createGUI();
            }
        };
       
       
       
        Thread t = new Thread(){
            public void run(){
                timer = new javax.swing.Timer(delay, task);
                timer.start();
            }
        };
        t.start();
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:20 #28
type Status report

message /applets/index.jsp

description The requested resource (/applets/index.jsp) is not available.
Avatar billede mik28 Seniormester
01. maj 2006 - 21:21 #29
Det virker, men det bliver ikke opdateret
Avatar billede mik28 Seniormester
01. maj 2006 - 21:22 #30
Du skal oprette html siden med koden :-)
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:23 #31
say what?
Avatar billede _carsten Nybegynder
01. maj 2006 - 21:24 #32
stephanryer> Nu er det jo nok ikke de 5 liner kode vælter hele læsset :)
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:24 #33
Carsten: Der er stadig ingen grund til at starte Timeren fra en anden tråd da Timeren selv starter en ny tråd.
Avatar billede mik28 Seniormester
01. maj 2006 - 21:24 #34
Det er jo en applet. Du kan ikke bare klikke på linket
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:25 #35
hvad er det så du vil have os til?
Avatar billede mik28 Seniormester
01. maj 2006 - 21:28 #36
Jeg vil gerne vide hvordan jeg kan kører createGUI(); indenfor nogle intervaller, sådan at jeg for nye værdier fra databasen.
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:28 #37
mik28: Koden skal ligge i compilede class-filer, evt. i en jar-fil. Den skal ikke ligge i din .jsp fil.
Avatar billede mik28 Seniormester
01. maj 2006 - 21:29 #38
Det er jeg helt med på :-)
Avatar billede _carsten Nybegynder
01. maj 2006 - 21:29 #39
Ja som den deler med cursors blink, tool tips, and so on - men det er vel ikke det reelle problem her(om der er én eller 2 tråde)
Avatar billede mik28 Seniormester
01. maj 2006 - 21:30 #40
Der er slet ikke nogen jsp fil :-)
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:30 #41
Følgende koder sørger for at kører createGUI(); med bestemte intervaller:

    javax.swing.Timer timer = new javax.swing.Timer(1000, new ActionListener(){
        public void actionPerformed(ActionEvent e){
            createGUI();
        }
    });
    timer.start();


hvor 1000 er hvor lange intervallerne skal være, målt i milisekunder.
Avatar billede mik28 Seniormester
01. maj 2006 - 21:31 #42
Hvis I kører min html fil kan I se data.
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:31 #43
carsten: nej antallet af tråde er ikke problemet men det er totalt spild af tid og plads at begynde at lade en ny tråd starte timeren da dette ikke har noget at sige i praksis.
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:31 #44
og hvad er stien til din html-fil?
Avatar billede _carsten Nybegynder
01. maj 2006 - 21:32 #45
Jeg ser ingen data og har ledt efter en html/jsp fil, men finder ingen
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:32 #46
samme her.
Avatar billede mik28 Seniormester
01. maj 2006 - 21:33 #47
I skal oprette en .html fil med dette indhold

<HTML>
<HEAD>
</HEAD>
<BODY>
<CENTER>
<applet
width="200"
height="400"
codebase="http://web-oasen.dk/applets"
code="Frugt.class"
archive="classes.jar">
</applet>

</CENTER>
</BODY>
</HTML>
Avatar billede _carsten Nybegynder
01. maj 2006 - 21:40 #48
Det er da vist lidt den omvendte verden, normalt skal den der ønsker at besøge en webside, ikke selv lave den - den side skal du have liggende på din server.
Avatar billede _carsten Nybegynder
01. maj 2006 - 21:42 #49
Hvorfor lægger du ikke Frugt.class i classes.jar ?????
Avatar billede _carsten Nybegynder
01. maj 2006 - 21:43 #50
Hov - sorry, det gør den også
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:44 #51
carsten: mik28 gav vel bare koden for at vi hurtigt selv kunne se applet'en.
Avatar billede mik28 Seniormester
01. maj 2006 - 21:44 #52
Idéen er at folk skal kunne lægge kode på deres sitets hvis de vil have informationen
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:46 #53
nice :) Well er det ikke data'ene du mangler at ændre mens applet'en kører? For at kunne se opdateringen?
Avatar billede mik28 Seniormester
01. maj 2006 - 21:49 #54
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>

<head>
<title>Web-oasen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>
<h2>WEB-OASEN.DK</h2>
<span id="indhold"></span>
<script type="text/javascript">

 
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   
    xmlhttp.open("POST","http://web-oasen.dk/Varer",false)
 
    xmlhttp.send()

    var dom = xmlhttp.responseXML;
   
    var html = new Array();
               
    html[html.length] = "<table style=\"width:200px;\">\n";
   
    var x=dom.getElementsByTagName("nr").length;
 
    for(i=0;i<x;i++) {
    var navn = dom.getElementsByTagName("navn").item(i).firstChild.nodeValue;
    var antal = dom.getElementsByTagName("antal").item(i).firstChild.nodeValue;
   
    html[html.length] = "<tr><td style=\"width:100px;\">" + navn + "</td><td style=\"width:100px;\">" + antal + "</td></tr>\n";

    }

    html[html.length] = "</table>\n";
               
    var allhtml = html.join("\n");
    document.getElementById("indhold").innerHTML = allhtml;

</script>

</body>
</html>
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:52 #55
hvad vil du sige med den kode? :)
Avatar billede mik28 Seniormester
01. maj 2006 - 21:52 #56
Jeh har lavet en anden løsning som gør det samme, men jeg kunne godt tænke mig at bygge det ind i en applet
Avatar billede mik28 Seniormester
01. maj 2006 - 21:54 #57
Det er den samme ting. Hvis du kører den, kan du se hvad det er jeg gerne vil have. Her kan du så tælle lageret ned http://www.web-oasen.dk/ordre.jsp
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:54 #58
oh, well hvad er det præcis du vil have skal ske?
Avatar billede mik28 Seniormester
01. maj 2006 - 21:54 #59
Det er så noget XML
Avatar billede stephanryer Nybegynder
01. maj 2006 - 21:56 #60
ja det kan jeg godt se. Og nu har du problemer med at loade data ind med bestemte intervaller? Må jeg ikke få kildekoden? Så ordner jeg det lige for dig.

Min junkmailadresse er denfalskeadresse@hotmail.com
Avatar billede mik28 Seniormester
01. maj 2006 - 21:56 #61
Det ville være fedt
Avatar billede _carsten Nybegynder
01. maj 2006 - 23:06 #62
Hvis du ikke har løst det endnu, er her en hurtig klippe/klistre udgave af din Frugt.class - burde fungere - du må selv fintune.

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import java.util.*;
import java.sql.*;

import util.*;

public class Frugt extends JApplet {



    public void init() {
        createGUI();

        int refreshRate = 1000;
        javax.swing.Timer timer = new javax.swing.Timer(refreshRate, new ActionListener(){
            public void actionPerformed(ActionEvent e){
                updateLager();
                System.out.println("Timer started");
            }
        });
        timer.start();
    }


    void buildConstraints(GridBagConstraints gbc, int gx, int gy,
        int gw, int gh, int wx, int wy) {

        gbc.gridx = gx;
        gbc.gridy = gy;
        gbc.gridwidth = gw;
        gbc.gridheight = gh;
        gbc.weightx = wx;
        gbc.weighty = wy;


    }

    private void createGUI() {

        // Set generelle værdier for panelet

        GridBagLayout gridbag = new GridBagLayout();
        GridBagConstraints constraints = new GridBagConstraints();
        JPanel pane = new JPanel();
        pane.setLayout(gridbag);
        pane.setBackground(Color.green);
        JLabel l;


        // Overskrift
        buildConstraints(constraints, 0, 0, 1, 1, 100, 100);
        constraints.fill = GridBagConstraints.NONE;
        constraints.anchor = GridBagConstraints.WEST;
        l = new JLabel(" Navn", JLabel.LEFT);
        gridbag.setConstraints(l, constraints);
        pane.add(l);

        // Overskrift
        buildConstraints(constraints, 1, 0, 1, 1, 100, 100);
        constraints.fill = GridBagConstraints.HORIZONTAL;
        l = new JLabel("Antal");
        gridbag.setConstraints(l, constraints);
        pane.add(l);


        Databaseforbindelsemysqlprepared d = new Databaseforbindelsemysqlprepared("com.mysql.jdbc.Driver", "jdbc:mysql://web-oasen.dk/DATABASE","","");

        Vector vi = new Vector();
        // vi.addElement(user);
        StringBuffer bu = new StringBuffer();
                    bu.append("select * from varer");

        ResultSet rs = d.select(bu.toString(), vi);

        int i = 1; // Placerer værdier i gridbacklayoutet

        try {
                while (rs.next()) {

                    // Navn
                    buildConstraints(constraints, 0, i, 1, 1, 100, 100);
                    constraints.fill = GridBagConstraints.NONE;
                    constraints.anchor = GridBagConstraints.WEST;
                    label[i-1] = new JLabel(rs.getString("navn"), JLabel.LEFT);
                    gridbag.setConstraints(l, constraints);
                    pane.add(label[i-1]);

                    // Antal på lager
                    buildConstraints(constraints, 1, i, 1, 1, 100, 100);
                    constraints.fill = GridBagConstraints.HORIZONTAL;
                    label[i] = new JLabel(rs.getString("antal"));
                    gridbag.setConstraints(l, constraints);
                    pane.add(label[i]);

                    i+=2;

                }


        setContentPane(pane);


        } catch (SQLException s) {
                System.out.println("<h3>SQL fejl: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }

        d.close();

        }


    private void updateLager() {

        Databaseforbindelsemysqlprepared d = new Databaseforbindelsemysqlprepared("com.mysql.jdbc.Driver", "jdbc:mysql://web-oasen.dk/DATABASE", "BRUGER", "PASSWORD");

        Vector vi = new Vector();
        // vi.addElement(user);
        StringBuffer bu = new StringBuffer();
                    bu.append("select * from varer");

        ResultSet rs = d.select(bu.toString(), vi);

        int i = 1;

        try {
                while (rs.next()) {

                    // Antal på lager
                    label[i].setText(rs.getString("antal"));
                    i += 2;
                }


        } catch (SQLException s) {
                System.out.println("<h3>SQL fejl: " + s.toString() + " "
                + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }

        d.close();

        }

    private JLabel[] label = new JLabel[8];

}
Avatar billede stephanryer Nybegynder
01. maj 2006 - 23:08 #63
System.out.println("Timer started");
... vil blive udført hver eneste gang der opdateres. Vil foreslå at denne linie placeres efter timer.start(); for kun at blive kørt én gang.
Avatar billede _carsten Nybegynder
01. maj 2006 - 23:13 #64
Troede egentlig du havde ordnet det
Avatar billede stephanryer Nybegynder
01. maj 2006 - 23:14 #65
ja, men har ikke fået svar tilbage endnu.
Avatar billede mik28 Seniormester
02. maj 2006 - 11:26 #66
Det virker sådan set okay. Jeg har bare problemer med at få gridbacklayoutet til at passe. Jeg brugte oprindeligt int i til at styre det med, men det passer ikke mere så jeg har indført en int j = 1; Så vidt jeg kan se så skulle den bare blive talt en op for hver gennemløb af while(rs.next())
Avatar billede mik28 Seniormester
02. maj 2006 - 11:54 #67
Burde jeg ikke kunne gøre sådan her

int i = 1;
        int j = 1; // Placerer værdier i gridbacklayoutet
        try {
                while (rs.next()) {

                    // Navn
                    buildConstraints(constraints, 0, j, 1, 1, 100, 100);
                    constraints.fill = GridBagConstraints.NONE;
                    constraints.anchor = GridBagConstraints.WEST;
                    label[i-1] = new JLabel(rs.getString("navn"), JLabel.LEFT);
                    gridbag.setConstraints(l, constraints);
                    pane.add(label[i-1]);

                    // Antal på lager
                    buildConstraints(constraints, 1, j, 1, 1, 100, 100);
                    constraints.fill = GridBagConstraints.HORIZONTAL;
                    label[i] = new JLabel(rs.getString("antal"));
                    gridbag.setConstraints(l, constraints);
                    pane.add(label[i]);

                    i+=2;
                    j++;

                }
Avatar billede mik28 Seniormester
02. maj 2006 - 12:07 #68
hmmm, det er ikke studenterhuen der trykker her :-)

gridbag.setConstraints(label[i-1], constraints);

selvfølgelig
Avatar billede mik28 Seniormester
02. maj 2006 - 12:21 #69
Mange tak for hjælpen :-)
Avatar billede _carsten Nybegynder
02. maj 2006 - 16:49 #70
Tillader mig at lægge et svar
Avatar billede mik28 Seniormester
02. maj 2006 - 16:50 #71
endnu engang tak for hjælpen
Avatar billede stephanryer Nybegynder
02. maj 2006 - 18:08 #72
say what? Dem fik Carsten lige allesammen?
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