Avatar billede Driton Seniormester
05. december 2012 - 16:00 Der er 2 kommentarer og
1 løsning

2 spg) omkring GUI og Hvorfor kommer min tabel ikke frem

1) ved at rode rundt med min GUIBestillinger får jeg nu en null når jeg kalder min GUIBestillinger koden ser såldes ud

public GUIBestillinger(){
           
            Hentbestillinger = new JButton("Hent alle Bestillinger");
            tilbagetilhovedmenu = new JButton("HovedMenu");
            add(Hentbestillinger, BorderLayout.NORTH);
            add(tilbagetilhovedmenu, BorderLayout.NORTH);
           
            Handler handler = new Handler();
            Hentbestillinger.addActionListener(handler);
               
           
}
           
            private class Handler implements ActionListener{
               
                public void actionPerformed(ActionEvent event){
               
                if(event.getSource() == Hentbestillinger){
   
                }       
            }
        }
    }

Der hvor jeg kalder den ser den sådan ud

GUIBestillinger gb = null;
gb = new GUIBestillinger();       
panelWest.add(gb);
gb.setVisible(true);


2)I min BestillingsHandler opretter jeg en tabel. Men jeg kan kun få vist knapperne(Som ligger i min GUIBestillinger) men tablen kommer ikke frem koden ser såldes ud i min GUIBestillinger.

public GUIBestillinger() throws SQLException, ClassNotFoundException{
           
Hentbestillinger = new JButton("Hent alle Bestillinger");
tilbagetilhovedmenu = new JButton("HovedMenu");
add(Hentbestillinger, BorderLayout.NORTH);
add(tilbagetilhovedmenu, BorderLayout.NORTH);
Handler handler = new Handler();
            Hentbestillinger.addActionListener(handler);
KaldSQL ks = new KaldSQL();
con = ks.connectNow();
ResultSet rs = ks.Hentalleordreliste(con);
System.out.println(rs);
ResultSetMetaData metadata = rs.getMetaData();
numcols = metadata.getColumnCount();
String[] col = new String[numcols];
    for(int count = 0; count < numcols; count++) 
                {           
            col[count] = metadata.getColumnLabel(count + 1);
                }
               
DefaultTableModel dtm_search_model = new DefaultTableModel(null,col);
               
                while (rs.next()) 
                  { 
              Object [] rowData = new Object[numcols];
                      System.out.println(rowData);
              for (int i = 0; i < rowData.length; ++i) 
                      { 
                  rowData[i] = rs.getObject(i+1);
                          System.out.println(rs.getInt("BestillingsID"));
                      } 
                      dtm_search_model.addRow(rowData);
                  table = new JTable(dtm_search_model); 
                      table.setFillsViewportHeight(true);
                      add(table, BorderLayout.CENTER);
                      System.out.println("hej4");
                  }

og jeg kalder den på samme måde, som jeg kalder den første gui. og den virkede. men siden jeg har rodet rundt med dem begge, gik første del også i stykker
Avatar billede Driton Seniormester
05. december 2012 - 16:01 #1
Forsten det hedder BestillingsHandler istedet for GUIBestillinger i nr 2 :D
Avatar billede Driton Seniormester
05. december 2012 - 16:07 #2
Eller er der en, som kan henvende mig til en tutorial omkring bruge flere JPanel og skifte content osv. og hvordan man opretter en Jtable. Fordi det man finder på nettet er så dårligt beskrevet
Avatar billede arne_v Ekspert
06. december 2012 - 01:34 #3
Jeg havde et eksempel paa lageret:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;

public class TableFromDatabase extends JFrame {
    private static final long serialVersionUID = 1L;
    private JTable tbl;
    private JButton btn;
    public TableFromDatabase() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new BorderLayout());
        setTitle("Table from database");
        tbl = new JTable();
        getContentPane().add(new JScrollPane(tbl), BorderLayout.CENTER);
        btn = new JButton("Read from database");
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                tbl.setModel(loadQuery("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/Test", "root", "", "SELECT f1,f2 FROM t1"));
            }
        });
        getContentPane().add(btn, BorderLayout.SOUTH);
        pack();
    }
    TableModel loadQuery(String driver, String conurl, String un, String pw, String sql) {
        GeneralDatabaseModel res = new GeneralDatabaseModel();
        try {
            Class.forName(driver);
            Connection con = DriverManager.getConnection(conurl, un, pw);
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();
            for(int colix = 1; colix <= rsmd.getColumnCount(); colix++) {
                res.addColumn(rsmd.getColumnName(colix));
            }
            while(rs.next()) {
                List<Object> row = new ArrayList<Object>();
                for(int colix = 1; colix <= rsmd.getColumnCount(); colix++) {
                    row.add(rs.getObject(colix));
                }
                res.addRow(row);
            }
            rs.close();
            stmt.close();
            con.close();
            return res;
        } catch (ClassNotFoundException e) {
            JOptionPane.showMessageDialog(this, e.getMessage());
            return null;
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this, e.getMessage());
            return null;
        }
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new TableFromDatabase();
                f.setVisible(true);
            }
        });
    }
}

class GeneralDatabaseModel extends AbstractTableModel {
    private static final long serialVersionUID = 1L;
    private List<String> colnams;
    private List<List<Object>> data;
    public GeneralDatabaseModel() {
        colnams = new ArrayList<String>();
        data = new ArrayList<List<Object>>();
    }
    public void addColumn(String colnam) {
        colnams.add(colnam);
    }
    public void addRow(List<Object> row) {
        data.add(row);
    }
    @Override
    public int getColumnCount() {
        return colnams.size();
    }
    @Override
    public int getRowCount() {
        return data.size();
    }
    @Override
    public String getColumnName(int colix) {
        return colnams.get(colix);
    }
    @Override
    public Object getValueAt(int rowix, int colix) {
        return data.get(rowix).get(colix);
    }
}
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