08. april 2007 - 18:28Der er
19 kommentarer og 1 løsning
arrayList hentes til en Jlist i en GUI HJÆLP
Jeg henter data i min database lægger det ind i en arrayList og skal så hente det ud i en JList i min GUI... HJÆLP hvad er der galt med min kode
//---------------- public class Driver {
public static void main(String[] args) throws Exception { // TODO Auto-generated method stub
Forbindelse.login(); Autorisation.hentMedarbejderId(); Vare.hentVareListe(); new HovedvindueGUI2(); } } //---------------- public class Vare {
private String 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. static ResultSet rs;
//-------test start------
//Henter vareNr og beskrivelse fra databasen og ligger den ind i arraylisten totalAntal. public static Vare[] hentVareListe() { try //laver en try catch så mulige fejl fra SQL fanges { Statement stmt = Forbindelse.connection.createStatement(); //her oprettes der et statement til databasen rs = stmt.executeQuery("SELECT VareNr, Beskrivelse FROM vare"); //statement som henter alle VareNr og lagervare(antal) fra databasen tabellen vare
ArrayList<Vare> totalAntal= new ArrayList<Vare>(); //indeholder VareNr og lagervare(antal). fra rs, i en ArrayList //Resultatet ligges i resultset'et rs.
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 beskrivelse = rs.getString("beskrivelse"); Vare vare = new Vare ("VareNr", "beskrivelse"); totalAntal.add (vare);
} } catch(Exception e) //Her er der fastsat at alle fejl skal fanges og { System.out.print("\nDer opstod en fejl under hentningen \n"); //dette skal udskrives. } return null;
} //---------------- public class DirektorGUI {
private JList vareNrJList = new JList(); private JLabel varenrLabel = new JLabel(); private JTextField visAlleMedarbejdereTextField = new JTextField(); private JTextField textField_1= new JTextField(); private JTextField visAlleOrdreTextField = new JTextField(); private JButton tilHovedvindueButton = new JButton(); private ButtonGroup buttonGroup = new ButtonGroup(); private JRadioButton radioButton_4 = new JRadioButton(); private JRadioButton radioButton_5 = new JRadioButton(); private JRadioButton visAlleOrdreRadioButton = new JRadioButton(); private JRadioButton igangvaerendeordreradioButton = new JRadioButton(); private JRadioButton visAlleMedarbejdereRadioButton = new JRadioButton(); private JRadioButton visudfravarenrRadioButton = new JRadioButton(); private JFrame frame;
public DirektorGUI() { initialize(); }
public 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);
visAlleOrdreTextField.setText("Vis alle ordre"); visAlleOrdreTextField.setBounds(260, 67,d.width-345, d.height-140); visAlleOrdreTextField.setVisible(true);
textField_1.setText("Vis alle igangværende ordre"); textField_1.setBounds(260, 67, d.width-345, d.height-140); textField_1.setVisible(false);
visAlleMedarbejdereTextField.setText("Vis alle medarbejdere"); visAlleMedarbejdereTextField.setBounds(260, 67, d.width-345, d.height-140); visAlleMedarbejdereTextField.setVisible(false);
visAlleOrdreRadioButton.setText("Vis alle ordre"); visAlleOrdreRadioButton.setBounds(10, 74, 163, 23); visAlleOrdreRadioButton.setSelected(true);
igangvaerendeordreradioButton.setText("Vis alle igangværende ordre"); igangvaerendeordreradioButton.setBounds(10, 48, 163, 23); visAlleOrdreRadioButton.setSelected(false);
visAlleMedarbejdereRadioButton.setText("Vis alle medarbejdere"); visAlleMedarbejdereRadioButton.setBounds(10, 103, 163, 23); visAlleOrdreRadioButton.setSelected(false);
visudfravarenrRadioButton.setText("Vis antal og placering efter vareNr"); visudfravarenrRadioButton.setBounds(10, 189, 204, 23); visAlleOrdreRadioButton.setSelected(false);
der er kun de 3 klasser du har set í mit spørgsmål andet har jeg ikke nu. har ændret tingene så der ikke var alle de statiske variabler :-) derfor er dette hvad jeg har selvføgelig ud over min forbindelses klasse
hmm det køre da vist ikke helt for mig det her... :-( her er den kode jeg så har lige nu,,, i bunden finder du den fejl jeg får. tak for din store tålmodighed..
###-------------- public class Driver {
public static void main(String[] args) throws Exception { Forbindelse.login(); Autorisation.hentMedarbejderId(); Vare.hentVareListe(); new HovedvindueGUI2(); } }
###--------------
public class Vare {
private String 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. static ResultSet rs;
//Henter vareNr og lagervare(antal) fra databasen og ligger den ind i arraylisten totalAntal. public static Vare[] hentVareListe() { try //laver en try catch så mulige fejl fra SQL fanges { Statement stmt = Forbindelse.connection.createStatement(); //her oprettes der et statement til databasen rs = stmt.executeQuery("SELECT VareNr, Beskrivelse FROM vare"); //statement som henter alle VareNr og lagervare(antal) fra databasen tabellen vare
ArrayList<VareEnhed> totalAntal= new ArrayList<VareEnhed>(); //indeholder VareNr og lagervare(antal). fra rs, i en ArrayList //Resultatet ligges i resultset'et rs.
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 beskrivelse = rs.getString("beskrivelse"); VareEnhed vare = new VareEnhed ("VareNr", "beskrivelse"); totalAntal.add (vare);
} } catch(Exception e) //Her er der fastsat at alle fejl skal fanges og { System.out.print("\nDer opstod en fejl under hentningen \n"); //dette skal udskrives. } return null;
visAlleOrdreTextField.setText("Vis alle ordre"); visAlleOrdreTextField.setBounds(260, 67,d.width-345, d.height-140); visAlleOrdreTextField.setVisible(true);
textField_1.setText("Vis alle igangværende ordre"); textField_1.setBounds(260, 67, d.width-345, d.height-140); textField_1.setVisible(false);
visAlleMedarbejdereTextField.setText("Vis alle medarbejdere"); visAlleMedarbejdereTextField.setBounds(260, 67, d.width-345, d.height-140); visAlleMedarbejdereTextField.setVisible(false);
visAlleOrdreRadioButton.setText("Vis alle ordre"); visAlleOrdreRadioButton.setBounds(10, 74, 163, 23); visAlleOrdreRadioButton.setSelected(true);
igangvaerendeordreradioButton.setText("Vis alle igangværende ordre"); igangvaerendeordreradioButton.setBounds(10, 48, 163, 23); visAlleOrdreRadioButton.setSelected(false);
visAlleMedarbejdereRadioButton.setText("Vis alle medarbejdere"); visAlleMedarbejdereRadioButton.setBounds(10, 103, 163, 23); visAlleOrdreRadioButton.setSelected(false);
visudfravarenrRadioButton.setText("Vis antal og placering efter vareNr"); visudfravarenrRadioButton.setBounds(10, 189, 204, 23); visAlleOrdreRadioButton.setSelected(false);
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at javax.swing.JList$1.getSize(Unknown Source) at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source) at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source) at javax.swing.plaf.basic.BasicListUI.paintImpl(Unknown Source) at javax.swing.plaf.basic.BasicListUI.paint(Unknown Source) at javax.swing.plaf.ComponentUI.update(Unknown Source) at javax.swing.JComponent.paintComponent(Unknown Source) at javax.swing.JComponent.paint(Unknown Source) at javax.swing.JComponent.paintChildren(Unknown Source) at javax.swing.JComponent.paint(Unknown Source) at javax.swing.JComponent.paintToOffscreen(Unknown Source) at javax.swing.BufferStrategyPaintManager.paint(Unknown Source) at javax.swing.RepaintManager.paint(Unknown Source) at javax.swing.JComponent._paintImmediately(Unknown Source) at javax.swing.JComponent.paintImmediately(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
public static VareEnhed[] hentVareListe() { ArrayList<VareEnhed> totalAntal= new ArrayList<VareEnhed>(); //indeholder VareNr og lagervare(antal). fra rs, i en ArrayList
try //laver en try catch så mulige fejl fra SQL fanges { Statement stmt = Forbindelse.connection.createStatement(); //her oprettes der et statement til databasen rs = stmt.executeQuery("SELECT VareNr, Beskrivelse FROM vare"); //statement som henter alle VareNr og lagervare(antal) fra databasen tabellen vare
//Resultatet ligges i resultset'et rs.
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 beskrivelse = rs.getString("beskrivelse"); VareEnhed vare = new VareEnhed ("VareNr", "beskrivelse"); totalAntal.add (vare);
} } catch(Exception e) //Her er der fastsat at alle fejl skal fanges og { System.out.print("\nDer opstod en fejl under hentningen \n"); //dette skal udskrives. } return totalAntal.toArray (new VareEnhed[0]);
ok så sket der noget dejligt... Men den skriver bare beskrivelse 4 gange, den burde komme med 4 stk vareNr og 4 stk beskrivelser... nogen forslag til at løse det
De vi har gjort nu er at indkapsle informationerne i et objekt - derfor skal du fortælle dette objekt hvordan det skal blive vist. Du skal bare ændre toString metoden:
Jeg tvivler på du er interesseret i at få en række for varenummer og en ny række for varebeskrivelse. Prøv ovenstående og se om ikke det er det du vil have.
Når du skal arbejde videre på den valgte vare siger du bare til - så fortsætter vi bare...
Hvis du ikke finder ud af det vil jeg godt hjælpe dig. Men det bliver først om et par dage.
Ellers er jeg sikker på at andre herinde kan hjælpe dig.
Synes godt om
Ny brugerNybegynder
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.