собственно сама таблица, там установлен слушатель на кнопку search от которой я хочу чтобы при ее нажатии выводились нужные строки из БД в мою таблицу. Код | import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField;
public class TableMain extends JFrame{
private TableModel tm; JTextField nameField; JTextField dateField; public TableMain() throws ClassNotFoundException, SQLException { setDefaultCloseOperation(EXIT_ON_CLOSE); tm = new TableModel(); JTable table = new JTable(tm); getContentPane().add(new JScrollPane(table)); JButton search = new JButton("Search"); JButton remove = new JButton("Delete"); JButton clear = new JButton("Clear"); JPanel jpButtons = new JPanel(); jpButtons.add(search); jpButtons.add(remove); jpButtons.add(clear); getContentPane().add(jpButtons, "South"); nameField = new JTextField(20); dateField = new JTextField(5); JLabel jlabel = new JLabel("Search :"); JPanel jpTextField = new JPanel(); jpTextField.add(jlabel); jpTextField.add(nameField); jpTextField.add(dateField); getContentPane().add(jpTextField,"North"); remove.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) { tm.deleteRow(); } }); // хочу чтобы при нажатии на кнопку search выводились нужные строки из БД search.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) { if(nameField.getText().trim().length()>0){} } }); clear.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) { tm.clearAll(); } }); setSize(500, 400); setVisible(true); }
public static void main(String[] args) throws ClassNotFoundException, SQLException { new TableMain(); } }
|
модель таблицы Код | import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; import javax.swing.table.AbstractTableModel;
public class TableModel extends AbstractTableModel{
List<String> columnNames = Arrays.asList("id","name","year_birth"); List<Table> data = new ArrayList<>(); ArrayList<String[]> datatemp; Connection conn; Table table; public TableModel() throws ClassNotFoundException, SQLException{ ConnectJdbc connJ = new ConnectJdbc(); conn = connJ.getConnection(); PreparedStatement ps = conn.prepareStatement("SELECT * FROM testBD.new_table"); ResultSet rs = ps.executeQuery(); while(rs.next()){ table = new Table(); table.setId_name(rs.getString("id_name")); table.setName(rs.getString("name")); table.setDate_birth(rs.getString("date_birth")); data.add(table); } } public void search() throws SQLException, ClassNotFoundException{ datatemp = new ArrayList<>(); for (int i = 0; i < data.size(); i++) { datatemp.add(new String[]{data.get(i).getId_name(),data.get(i).getName(), data.get(i).getDate_birth()}); } } @Override public int getRowCount() { return data.size();
}
@Override public int getColumnCount() { return columnNames.size();
}
@Override public Object getValueAt(int rowIndex, int columnIndex) { return datatemp.get(rowIndex)[columnIndex];
}
@Override public String getColumnName(int column) { return columnNames.get(column); } public void setValueAt(String[] data) { // this.data.add(data); this.fireTableDataChanged(); } public void deleteRow(){ data.remove(getRowCount()-1); this.fireTableDataChanged(); }
public void clearAll(){ data.clear(); this.fireTableDataChanged(); } }
|
соединение с базой Код | @Override public int getRowCount() { return data.size();
}
@Override public int getColumnCount() { return columnNames.size();
}
@Override public Object getValueAt(int rowIndex, int columnIndex) { return datatemp.get(rowIndex)[columnIndex];
}
@Override public String getColumnName(int column) { return columnNames.get(column); } public void setValueAt(String[] data) { // this.data.add(data); this.fireTableDataChanged(); } public void deleteRow(){ data.remove(getRowCount()-1); this.fireTableDataChanged(); }
public void clearAll(){ data.clear(); this.fireTableDataChanged(); } }
|
Код | public class Table { private String id_name; private String name; private String date_birth;
public String getId_name() { return id_name; }
public void setId_name(String id_name) { this.id_name = id_name; }
public String getName() { return name; }
public String getDate_birth() { return date_birth; }
public void setDate_birth(String date_birth) { this.date_birth = date_birth; }
public void setName(String name) { this.name = name; } }
|
Добавлено @ 12:52У самого не получается как я понимаю по такой причине: когда вызываю модель таблицы, то создается эта самая таблица, но она пустая так данные datatemp заполняются после вызова метода search( ). как решить эту проблемку Это сообщение отредактировал(а) tooncheg - 5.12.2014, 12:58
|