Displaying JTable in JFrame

后端 未结 2 525
再見小時候
再見小時候 2021-01-14 19:00

What i want to do:

I want to list some records of a database. This list should be displayed in a JFrame popup.

Description:

相关标签:
2条回答
  • 2021-01-14 19:02

    You do not need to write so many lines of code to display a file. Just download the jar file rs2xml and add it to your project library.

    Note: This will be useful if you are using netbeans

    How to use it?

    • Create the table in backend
    • Download rs2xml jar file
    • Add it to the project library
    • Drag the JTable from the swing controls to your JFrame
    • Now write the following code as follows:

    Write your query:

        ps=con.prepareStatement("select * from register");       
        ResultSet r=ps.executeQuery();
        jTable1.setModel(DbUtils.resultSetToTableModel(r)); //display the register
    
    0 讨论(0)
  • 2021-01-14 19:16
    • see JTable tutorial, everything are described there

    • I can't see there reason to use AbstractTableModel, no idea why bothering for JTable contains a real number of rows & columns (up to 500/1000 & 20/50), start with DefaultTableModel instead

    • or change DefaultTableModel with this AbstractTableModel

    can start with

    enter image description here

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    import javax.swing.UIManager.LookAndFeelInfo;
    import javax.swing.border.LineBorder;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    import javax.swing.table.*;
    
    public class RemoveAddRows extends JFrame {
    
        private static final long serialVersionUID = 1L;
        private Object[] columnNames = {"Type", "Company", "Shares", "Price"};
        private Object[][] data = {
            {"Buy", "IBM", new Integer(1000), new Double(80.50)},
            {"Sell", "MicroSoft", new Integer(2000), new Double(6.25)},
            {"Sell", "Apple", new Integer(3000), new Double(7.35)},
            {"Buy", "Nortel", new Integer(4000), new Double(20.00)}
        };
        private JTable table;
        private DefaultTableModel model;
        private javax.swing.Timer timer = null;
    
        public RemoveAddRows() {
            model = new DefaultTableModel(data, columnNames) {
    
                private static final long serialVersionUID = 1L;
    
                @Override
                public Class getColumnClass(int column) {
                    return getValueAt(0, column).getClass();
                }
            };
            table = new JTable(model) {
    
                private static final long serialVersionUID = 1L;
    
                @Override
                public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
                    Component c = super.prepareRenderer(renderer, row, column);
                    if (isRowSelected(row) && isColumnSelected(column)) {
                        ((JComponent) c).setBorder(new LineBorder(Color.red));
                    }
                    return c;
                }
            };
            ListSelectionModel rowSelMod = table.getSelectionModel();
            rowSelMod.addListSelectionListener(new ListSelectionListener() {
    
                public void valueChanged(ListSelectionEvent e) {
                    int row = table.getSelectedRow();
                    int col = table.getSelectedColumn();
                    String str = "Selected Row(s): ";
                    int[] rows = table.getSelectedRows();
                    for (int i = 0; i < rows.length; i++) {
                        str += rows[i] + " ";
                    }
                    str += "Selected Column(s): ";
                    int[] cols = table.getSelectedColumns();
                    for (int i = 0; i < cols.length; i++) {
                        str += cols[i] + " ";
                    }
                    str += "Selected Cell: " + table.getSelectedRow() + ", " + table.getSelectedColumn();
                    System.out.println(str);
                    Object value = table.getValueAt(row, col);
                    System.out.println(String.valueOf(value));
                }
            });
            table.setPreferredScrollableViewportSize(table.getPreferredSize());
            JScrollPane scrollPane = new JScrollPane(table);
            add(scrollPane);
            JButton button1 = new JButton("Remove all rows");
            button1.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent arg0) {
                    if (model.getRowCount() > 0) {
                        for (int i = model.getRowCount() - 1; i > -1; i--) {
                            model.removeRow(i);
                        }
                    }
                    System.out.println("model.getRowCount() --->" + model.getRowCount());
                }
            });
            JButton button2 = new JButton("Add new rows");
            button2.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent arg0) {
                    start();
                }
            });
            JPanel southPanel = new JPanel();
            southPanel.add(button1);
            southPanel.add(button2);
            add(southPanel, BorderLayout.SOUTH);
        }
    
        private void start() {
            timer = new javax.swing.Timer(2500, updateCol());
            timer.start();
        }
    
        public Action updateCol() {
            return new AbstractAction("text load action") {
    
                private static final long serialVersionUID = 1L;
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    DefaultTableModel model = (DefaultTableModel) table.getModel();
                    Object[] data0 = {"Buy", "IBM", new Integer(1000), new Double(80.50)};
                    model.addRow(data0);
                    Object[] data1 = {"Sell", "MicroSoft", new Integer(2000), new Double(6.25)};
                    model.addRow(data1);
                    Object[] data2 = {"Sell", "Apple", new Integer(3000), new Double(7.35)};
                    model.addRow(data2);
                    Object[] data3 = {"Buy", "Nortel", new Integer(4000), new Double(20.00)};
                    model.addRow(data3);
                    System.out.println("model.getRowCount() --->" + model.getRowCount());
                    timer.stop();
                    int rowIndex = table.getRowCount() - 1;
                    table.changeSelection(rowIndex, 0, false, false);
                }
            };
        }
    
        public static void main(String[] args) {
            try {
                for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                    System.out.println(info.getName());
                    if ("Nimbus".equals(info.getName())) {
                        UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (UnsupportedLookAndFeelException e) {
                // handle exception
            } catch (ClassNotFoundException e) {
                // handle exception
            } catch (InstantiationException e) {
                // handle exception
            } catch (IllegalAccessException e) {
                // handle exception
            }
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    RemoveAddRows frame = new RemoveAddRows();
                    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                    frame.pack();
                    frame.setLocationRelativeTo(null);
                    frame.setVisible(true);
                }
            });
        }
    }
    
    0 讨论(0)
提交回复
热议问题