Avatar billede renebmadsen Nybegynder
07. april 2007 - 13:11 Der er 11 kommentarer og
1 løsning

Indsætte tekst fra en array ind i en Jlist i min GUI

Hej jeg skal lave en GUI hvor jeg henter det totalantal fra min
Colli Class over i en Jlist, men er gået i stå nogen der kan hjælpe hurtigt ?

//---------------------------

import java.sql.*;
import java.util.*;


public class Colli {
    static ResultSet rs;
    static Statement stmt;
    static ArrayList<String> totalAntal= new ArrayList<String>();

   
    public static void hentTotalAntal()
    {
        try //laver en try catch så mulige fejl fra SQL fanges
        {
            Statement stmt = Forbindelse.connection.createStatement();
            rs = stmt.executeQuery("SELECT VareNr, lagervare  FROM vare");
           
            while (rs.next()) //der køres en while løkke i lige så lang tid som der er elementer
            {
                String raekke = rs.getString("VareNr");
                totalAntal.add(raekke);

                String raekke2 = rs.getString("lagervare");
                totalAntal.add(raekke2);                   
            }
           
        }
        catch(Exception e) //Her er der fastsat at alle fejl skal fanges og
        {
            System.out.print("\nDer opstod en fejl under hentningen \n");
        }
    }

}
Avatar billede mikkelbm Nybegynder
07. april 2007 - 13:30 #1
Hvor har du din JList?
Avatar billede renebmadsen Nybegynder
07. april 2007 - 13:38 #2
Den er i min GUI Class
det er en længere tekst
Avatar billede renebmadsen Nybegynder
07. april 2007 - 13:40 #3
import java.awt.Dimension;



public class DirektorGUI
{

    private static JList vareNr;
    private static ButtonGroup buttonGroup = new ButtonGroup();
    private static JTextField visAlleMedarbejdereTextField;
    private static JTextField textField_1;
    private static JTextField visAlleOrdreTextField;
    private static  JFrame frame;

    public DirektorGUI()
    {
        initialize();
    }

    public static void initialize()
    {
        frame = new JFrame("Direktør");
        frame.setMenuBar(null);
        frame.getContentPane().setLayout(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Dimension d= Toolkit.getDefaultToolkit().getScreenSize();
        frame.setBounds(0,0,d.width, d.height);
        frame.setVisible(true);

        JButton tilHovedvindueButton = new JButton();
        tilHovedvindueButton.addMouseListener(new MouseAdapter() {
            public void mouseReleased(MouseEvent arg0) {new HovedvindueGUI2();
            frame.dispose();
            }
        });
        tilHovedvindueButton.setText("Til Hovedvindue");
        tilHovedvindueButton.setBounds(10, 10,d.width-1075, d.height-770);
        frame.getContentPane().add(tilHovedvindueButton);

        visAlleOrdreTextField = new JTextField();
        visAlleOrdreTextField.setText("Vis alle ordre");
        visAlleOrdreTextField.setBounds(260, 67,d.width-345, d.height-140);
        visAlleOrdreTextField.setVisible(true);
        frame.getContentPane().add(visAlleOrdreTextField);

        textField_1 = new JTextField();
        textField_1.setText("Vis alle igangværende ordre");
        textField_1.setBounds(260, 67, d.width-345, d.height-140);
        textField_1.setVisible(false);
        frame.getContentPane().add(textField_1);

        visAlleMedarbejdereTextField = new JTextField();
        visAlleMedarbejdereTextField.setText("Vis alle medarbejdere");
        visAlleMedarbejdereTextField.setBounds(260, 67, d.width-345, d.height-140);
        visAlleMedarbejdereTextField.setVisible(false);
        frame.getContentPane().add(visAlleMedarbejdereTextField);

        JRadioButton visAlleOrdreRadioButton = new JRadioButton();
        visAlleOrdreRadioButton.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent arg0) {visAlleOrdreTextField.setVisible(true);
            textField_1.setVisible(false);
            visAlleMedarbejdereTextField.setVisible(false);
            vareNr.setVisible(false);
            }
        });
        buttonGroup.add(visAlleOrdreRadioButton);
        visAlleOrdreRadioButton.setText("Vis alle ordre");
        visAlleOrdreRadioButton.setBounds(10, 74, 163, 23);
        visAlleOrdreRadioButton.setSelected(true);
        frame.getContentPane().add(visAlleOrdreRadioButton);

        JRadioButton igangvaerendeordreradioButton = new JRadioButton();
        igangvaerendeordreradioButton.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent arg0) {textField_1.setVisible(true);
            visAlleOrdreTextField.setVisible(false);
            visAlleMedarbejdereTextField.setVisible(false);
            vareNr.setVisible(false);
            }
        });
        buttonGroup.add(igangvaerendeordreradioButton);
        igangvaerendeordreradioButton.setText("Vis alle igangværende ordre");
        igangvaerendeordreradioButton.setBounds(10, 48, 163, 23);
        visAlleOrdreRadioButton.setSelected(false);
        frame.getContentPane().add(igangvaerendeordreradioButton);

        JRadioButton visAlleMedarbejdereRadioButton = new JRadioButton();
        visAlleMedarbejdereRadioButton.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent arg0) {visAlleMedarbejdereTextField.setVisible(true);
            visAlleOrdreTextField.setVisible(false);
            textField_1.setVisible(false);
            vareNr.setVisible(false);
            }
        });
        buttonGroup.add(visAlleMedarbejdereRadioButton);
        visAlleMedarbejdereRadioButton.setText("Vis alle medarbejdere");
        visAlleMedarbejdereRadioButton.setBounds(10, 103, 163, 23);
        visAlleOrdreRadioButton.setSelected(false);
        frame.getContentPane().add(visAlleMedarbejdereRadioButton);

        JRadioButton visudfravarenrRadioButton = new JRadioButton();
        visudfravarenrRadioButton.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent arg0) {vareNr.setVisible(true);
            }
        });
        buttonGroup.add(visudfravarenrRadioButton);
        visudfravarenrRadioButton.setText("Vis antal og placering efter vareNr");
        visudfravarenrRadioButton.setBounds(10, 189, 204, 23);
        visAlleOrdreRadioButton.setSelected(false);
        frame.getContentPane().add(visudfravarenrRadioButton);

        JRadioButton radioButton_4 = new JRadioButton();
        buttonGroup.add(radioButton_4);
        radioButton_4.setText("New JRadioButton");
        radioButton_4.setBounds(10, 135, 157, 23);
        visAlleOrdreRadioButton.setSelected(false);
        frame.getContentPane().add(radioButton_4);

        JRadioButton radioButton_5 = new JRadioButton();
        buttonGroup.add(radioButton_5);
        radioButton_5.setText("New JRadioButton");
        radioButton_5.setBounds(10, 164, 157, 23);
        visAlleOrdreRadioButton.setSelected(false);
        frame.getContentPane().add(radioButton_5);

        vareNr = new JList();
        vareNr.setBounds(260, 26, 183, 200);
        vareNr.setVisible(false);
        frame.getContentPane().add(vareNr);

        final JLabel varenrLabel = new JLabel();
        varenrLabel.setText("VareNr og beskrivelse");
        varenrLabel.setBounds(260, 3, 183, 14);
        varenrLabel.setVisible(false);
        frame.getContentPane().add(varenrLabel);

        visudfravarenrRadioButton.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent arg0) {varenrLabel.setVisible(true);
            visAlleOrdreTextField.setVisible(false);
            textField_1.setVisible(false);
            visAlleMedarbejdereTextField.setVisible(false);
            }
        });
    }
}
Avatar billede mikkelbm Nybegynder
07. april 2007 - 14:21 #4
1) Jeg bryder mig ikke om at alle dine variabler er statiske - men pyt med det her.

2)

String raekke = rs.getString("VareNr");
totalAntal.add(raekke);

String raekke2 = rs.getString("lagervare");
totalAntal.add(raekke2);   

Du er godt klar over at du aldrig vil kunne sammenknytte varenummer og varetekst med ovenstående kode, ikke? Det du skal gøre i stedet er at oprette en klasse der indeholder ovenstående informationer:

public class Vare
{
    private String vareNr, vareTekst;
   
    public Vare (String vareNr, String vareTekst)
    {
        this.vareNr = vareNr;
        this.vareTekst = vareTekst;
    }
   
    public String getVareNr()
    { return vareNr; }
   
    public String getVareTekst()
    { return vareTekst; }
   
    public String toString()
    {
        return vareTekst;
    }
}

Og din klasse ser nu sådan her ud (jeg har sat metoden til at returnere listen med varer):

public class Colli {
    static ResultSet rs;
    static Statement stmt;

 
    public static Vare[] hentTotalAntal()
    {
        try //laver en try catch så mulige fejl fra SQL fanges
        {
            Statement stmt = Forbindelse.connection.createStatement();
            rs = stmt.executeQuery("SELECT VareNr, lagervare  FROM vare");
           
            ArrayList<Vare> totalAntal= new ArrayList<Vare>();
           
            while (rs.next()) //der køres en while løkke i lige så lang tid som der er elementer
            {
                String vareNr = rs.getString("VareNr");
                String vareTekst = rs.getString("lagervare");
                Vare vare = new Vare (vareNr, vareTekst);
                totalAntal.add (vare);
            }
           
            return totalAntal.toArray(new Vare[0]);
         
        }
        catch(Exception e) //Her er der fastsat at alle fejl skal fanges og
        {
            System.out.print("\nDer opstod en fejl under hentningen \n");
        }
    }
}


3)

Nu skal indholdet fyldes i din JList:

...
Vare[] alleVarer = Colli.hentTotalAntal(); // Hent alle varer
vareNr = new JList(alleVarer); // Opret JList med de hentede varer
vareNr.setBounds(260, 26, 183, 200);
vareNr.setVisible(false);
...
Avatar billede mikkelbm Nybegynder
07. april 2007 - 14:22 #5
Og for ikke at få compile-fejl i 2'eren må du nok hellere indsætte følgende:

catch(Exception e) //Her er der fastsat at alle fejl skal fanges og
{
    System.out.print("\nDer opstod en fejl under hentningen \n");
    return new Vare[0];
}
Avatar billede renebmadsen Nybegynder
07. april 2007 - 14:37 #6
Har en class Vare som ser sådan her ud :


public class Vare {
    private int vareNr;
    private String beskrivelse;
    private String enhed;
    private double pris;
    private int antal;
    private String lokation;
    static Statement stmt; //statement som bruges til at udføre kommandoer på databasen.
   
    public static void opretVare(int vareNr, String beskrivelse, String enhed, double pris, int lagervare)throws Exception
    {
       

try
{
        Statement stmt = Forbindelse.connection.createStatement();
        stmt.executeUpdate("INSERT INTO vare VALUES ("+vareNr+", '"+beskrivelse+"', '"+enhed+"', "+pris+", "+lagervare+");");
}
catch(Exception e)
{
    System.out.print("\nVaren kunne ikke oprettes !!\nFindes højst sansynlig allerede\n");
    }
finally
{
System.out.print("\nVare blev oprettet");
}       
    }
   
    public  static void sletVare(int vareNr)
    {
        try
        {
        Statement stmt = Forbindelse.connection.createStatement();
        stmt.executeUpdate("DELETE FROM vare WHERE vareNr = "+vareNr+"");
        }
        catch(Exception e)
        {
            System.out.print("\nKunne ikke slette varen !\n");
        }
        finally
        {
            System.out.print("Varenr "+vareNr+" Blev slettede");
        }
    }
   
    public static void retVare(int vareNr, String beskrivelse, String enhed, double pris, int lagervare)
    {
        try
        {
        Statement stmt = Forbindelse.connection.createStatement();
        stmt.executeUpdate("UPDATE vare SET beskrivelse = '"+beskrivelse+"', enhed = '"+enhed+"', pris = "+pris+", lagervare = "+lagervare+" WHERE vareNr = '"+vareNr+"'");
        }
        catch(Exception e)
        {
            System.out.print("\nVaren kunne ikke ændres !\n");
        }
        finally
        {
            System.out.print("vareNr "+vareNr+" blev ændret til, beskrivelse = "+beskrivelse+", enhed = "+enhed+", pris = "+pris+", lagervare = "+lagervare+" WHERE vareNr = '"+vareNr+"'");
        }
       
    }
   
    public void findVare(int vareNr, int antal)
    {
       
    }
   
    public void opdaterVareBeholdning(int vareNr, int antal, String lokation)
    {
       
    }
   
    public static int visVare(int vareNr)
    {
        int k = 0 ;
        ResultSet antal = null;
        try
        {
       
        Statement stmt = Forbindelse.connection.createStatement();
        antal = stmt.executeQuery("SELECT lagervare FROM vare WHERE VareNr = "+vareNr+"");
        }
        catch(Exception e)
        {
            System.out.print("\nVaren kunne ikke ændres !\n");
        }
        finally
        {
            System.out.print("\nvareNr "+vareNr+" har en lagerbeholdning på ");
           
        }   
       
        try {
            while (antal.next()) //der køres en while løkke i lige så lang tid som der er elementer
            {
                k = Integer.parseInt(antal.getString("lagervare"));//tager elmentet som ligger under VareNr og tilføjer til totalAntal
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.print(k);
    return k;
    }

   
}
Avatar billede mikkelbm Nybegynder
07. april 2007 - 14:43 #7
Det der er det jeg vil kalde en "Manager/controller" klasse - den håndterer alle dine CRUD funktioner. Det jeg snakker om er et domæne-objekt som du kan kalde Vare.
Avatar billede renebmadsen Nybegynder
07. april 2007 - 15:12 #8
ok jeg skal bruge de klasser jeg har da det skal bruges andre steder. kan det flettes ind i min vare class ? eller hvad med det?
Avatar billede mikkelbm Nybegynder
07. april 2007 - 16:31 #9
Jeg vil ikke "flette" noget ind i din nuværende vare-klasse.

Du kalder bare domæneobjektet noget andet end Vare, f.eks. VareEnhed og giver den alle de egenskaber dine varer nu har i databasen (ligesom jeg var begyndt på i min Vare-klasse).

Dine metoder bliver så til noget a la:

public static void retVare(int vareNr, String beskrivelse, String enhed, double pris, int lagervare)...
bliver til:
public static void retVare(VareEnhed vare)...

public  static void sletVare(int vareNr)
bliver til:
public  static void sletVare(VareEnhed vare)...

public static void opretVare(int vareNr, String beskrivelse, String enhed, double pris, int lagervare)
bliver til:
public static void opretVare(Vare vare)...

Osv osv osv... (hvis du forstår)

Ovenstående må også betegnes som den "rigtige" måde at gøre det på - om ikke andet så den "objekt-orienterede" måde at gøre det på.

I den metode jeg lavede om tidligere skal du så bare ændre den til at returnere VareEnhed i stedet for Vare.
Avatar billede mikkelbm Nybegynder
07. april 2007 - 16:33 #10
Med ovenstående ændringer opretter du en vare ved at gøre følgende:

int varenr = ...;
string varetekst = ...;
Osv...

VareEnhed nyVare = new VareEnhed (varenr, varetekst, etc...);
Vare.opretVare (nyVare);
Avatar billede mikkelbm Nybegynder
08. april 2007 - 19:09 #11
Skal vi lukke her og fortsætte i den anden tråd du har oprettet?
Avatar billede renebmadsen Nybegynder
08. april 2007 - 19:36 #12
jep synes jeg vi skal
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