Weitere Arbeit an dem Tabellemodell, sowie zugehörigen Actionlistenern,

um verschiedenen Buttons in Tabellen unterschiedliche Aktionen zu
hinterlegen.
This commit is contained in:
Servicepoint
2014-10-08 17:45:04 +02:00
parent 4afdb2f6d1
commit a29da59a11
8 changed files with 229 additions and 22 deletions

View File

@@ -6,7 +6,8 @@ import de.katho.kBorrow.data.KUser;
public interface DbConnector {
public boolean createUser(String pName, String pSurname);
public int createUser(String pName, String pSurname);
public ArrayList<KUser> getUserList();
public boolean deleteUser(int id);
}

View File

@@ -7,9 +7,14 @@ import de.katho.kBorrow.data.KUser;
public class SqlConnector implements DbConnector{
@Override
public boolean createUser(String pName, String pSurname) {
/**
* @return 0: Benutzer erfolgreich erzeugt
* 1: SQL-Fehler
* 2: Benutzername darf nicht leer sein.
*/
public int createUser(String pName, String pSurname) {
// TODO Auto-generated method stub
return false;
return 0;
}
@Override
@@ -17,5 +22,11 @@ public class SqlConnector implements DbConnector{
// TODO Auto-generated method stub
return null;
}
@Override
public boolean deleteUser(int id) {
// TODO Auto-generated method stub
return false;
}
}

View File

@@ -181,17 +181,39 @@ public class SqliteConnector implements DbConnector {
return text.toString();
}
public boolean createUser(String pName, String pSurname){
/**
*
* @return 0: Benutzer erfolgreich erzeugt
* 1: SQL-Fehler beim Erzeugen
* 2: Benutzername ist leer
*/
public int createUser(String pName, String pSurname){
if (pName.isEmpty() && pSurname.isEmpty()) return 2;
try {
Statement st = this.connection.createStatement();
String query = "INSERT INTO user (name, surname) VALUES ('"+pName+"', '"+pSurname+"')";
st.executeUpdate(query);
return true;
return 0;
} catch (SQLException e) {
e.printStackTrace();
return 1;
}
}
public boolean deleteUser(int id){
// @TODO: Ausleihen auf einen anderen User umschreiben!
try {
Statement st = this.connection.createStatement();
String query = "DELETE FROM user WHERE id = '"+id+"'";
st.executeUpdate(query);
return true;
}
catch (SQLException e){
e.printStackTrace();
return false;
}

View File

@@ -1,5 +1,6 @@
package de.katho.kBorrow.gui;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.UIManager;
@@ -11,21 +12,12 @@ import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import de.katho.kBorrow.Main;
import de.katho.kBorrow.db.DbConnector;
import javax.swing.JTable;
@@ -111,8 +103,13 @@ public class MainWindow implements ActionListener {
userTable = new JTable(new UserTableModel(this.dbCon));
userTable.setFillsViewportHeight(true);
userTableModel = (UserTableModel)userTable.getModel();
//userTableModel.
TableButton userDeleteButton = new TableButton("L<EFBFBD>schen", this.userTable, new UserDeleteListener(userTable));
userTable.getColumn("L<EFBFBD>schen").setCellEditor(userDeleteButton);
userTable.getColumn("L<EFBFBD>schen").setCellRenderer(userDeleteButton);
TableButton userEditButton = new TableButton("Bearbeiten", this.userTable, new UserEditListener());
userTable.getColumn("Bearbeiten").setCellEditor(userEditButton);
userTable.getColumn("Bearbeiten").setCellRenderer(userEditButton);
scrollUserList = new JScrollPane(userTable);
panelUserList.add(scrollUserList);
@@ -161,14 +158,24 @@ public class MainWindow implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == this.btnUserSave){
if(this.userModeSave){
if(this.dbCon.createUser(this.textFieldUserName.getText(), this.textFieldUserSurname.getText())){
int re = this.userTableModel.createUser(this.textFieldUserName.getText(), this.textFieldUserSurname.getText());
switch (re){
case 0:
this.lblUserStatus.setText("Benutzer \""+this.textFieldUserName.getText()+" "+this.textFieldUserSurname.getText()+"\" erfolgreich hinzugef<65>gt.");
this.textFieldUserName.setText("");
this.textFieldUserSurname.setText("");
this.userTableModel.updateTable();
}
else {
this.lblUserStatus.setText("Benutzer konnte nicht erstellt werden.");
break;
case 1:
this.lblUserStatus.setText("SQL-Fehler. Benutzer konnte nicht erstellt werden.");
this.textFieldUserName.setText("");
this.textFieldUserSurname.setText("");
break;
case 2:
this.lblUserStatus.setText("Entweder Vor- oder Nachname m<>ssen ausgef<65>llt sein.");
break;
}
}
else {

View File

@@ -0,0 +1,95 @@
package de.katho.kBorrow.gui;
import java.awt.Component;
import java.awt.event.ActionListener;
import java.util.EventObject;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.event.CellEditorListener;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
public class TableButton extends AbstractCellEditor implements TableCellRenderer, TableCellEditor {
private int selectedRow;
private int selectedColumn;
private JButton button;
private JTable parentTable;
private UserTableModel tModel;
/**
*
*/
private static final long serialVersionUID = 2605797435586840499L;
public TableButton(String pLabel, JTable pTable, ActionListener listener){
this.button = new JButton(pLabel);
this.parentTable = pTable;
this.tModel = (UserTableModel)this.parentTable.getModel();
this.button.addActionListener(listener);
}
@Override
public void addCellEditorListener(CellEditorListener arg0) {
}
@Override
public void cancelCellEditing() {
}
@Override
public Object getCellEditorValue() {
return "";
}
@Override
public boolean isCellEditable(EventObject arg0) {
return true;
}
@Override
public void removeCellEditorListener(CellEditorListener arg0) {
}
@Override
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
@Override
public boolean stopCellEditing() {
return true;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
selectedRow = row;
selectedColumn = column;
if(isSelected){
this.button.setForeground(table.getSelectionForeground());
this.button.setBackground(table.getSelectionBackground());
}
else {
this.button.setForeground(table.getForeground());
this.button.setBackground(table.getBackground());
}
return this.button;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
if (isSelected){
this.button.setForeground(table.getSelectionForeground());
this.button.setBackground(table.getSelectionBackground());
} else {
this.button.setForeground(table.getForeground());
this.button.setBackground(UIManager.getColor("Button.background"));
}
//this.button.setText((value == null) ? "" : value.toString());
return this.button;
}
}

View File

@@ -0,0 +1,24 @@
package de.katho.kBorrow.gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTable;
public class UserDeleteListener implements ActionListener {
private JTable table;
private UserTableModel model;
public UserDeleteListener(JTable pTable){
this.table = pTable;
this.model = (UserTableModel)table.getModel();
}
public void actionPerformed(ActionEvent arg0) {
int row = table.getSelectedRow();
this.model.deleteUser(model.getUserId(row));
}
}

View File

@@ -0,0 +1,13 @@
package de.katho.kBorrow.gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class UserEditListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Edit");
}
}

View File

@@ -14,7 +14,7 @@ public class UserTableModel extends AbstractTableModel {
*/
private static final long serialVersionUID = 435829735305533728L;
private DbConnector dbCon;
private String[] header = {"Vorname", "Nachname", "Aktion"};
private String[] header = {"Vorname", "Nachname", "Bearbeiten", "L<EFBFBD>schen"};
private ArrayList<KUser> data;
public UserTableModel(DbConnector pDbCon){
@@ -47,4 +47,38 @@ public class UserTableModel extends AbstractTableModel {
this.data = this.dbCon.getUserList();
this.fireTableDataChanged();
}
// Die Funktion muss differenzierter werden
public boolean isCellEditable(int row, int col){
if (col > 1) return true;
return false;
}
public int getUserId(int row){
return this.data.get(row).getId();
}
public String getUserName(int row){
return this.data.get(row).getName();
}
public String getUserSurname(int row){
return this.data.get(row).getSurname();
}
public boolean deleteUser(int id){
if (dbCon.deleteUser(id)){
updateTable();
return true;
}
return false;
}
public int createUser(String pName, String pSurname){
int status = this.dbCon.createUser(pName, pSurname);
updateTable();
return status;
}
}