Benutzer können jetzt fehlerfrei gelöscht und bearbeitet werden. Es
treten keine Fehler mehr bei der Anzeige der Tabellenbuttons auf.
This commit is contained in:
@@ -22,4 +22,12 @@ public class KUser {
|
||||
public int getId(){
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void setName(String pName){
|
||||
this.name = pName;
|
||||
}
|
||||
|
||||
public void setSurname(String pSurname){
|
||||
this.surname = pSurname;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@ public interface DbConnector {
|
||||
public int createUser(String pName, String pSurname);
|
||||
public ArrayList<KUser> getUserList();
|
||||
public boolean deleteUser(int id);
|
||||
public int editUser(int pId, String pName, String pSurname);
|
||||
|
||||
}
|
||||
|
||||
@@ -28,5 +28,11 @@ public class SqlConnector implements DbConnector{
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int editUser(int pId, String pName, String pSurname) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -238,5 +238,22 @@ public class SqliteConnector implements DbConnector {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int editUser(int pId, String pName, String pSurname) {
|
||||
if(pName.isEmpty() && pSurname.isEmpty()) return 2;
|
||||
try {
|
||||
Statement st = this.connection.createStatement();
|
||||
String query = "UPDATE user SET name = '"+pName+"', surname = '"+pSurname+"' WHERE id = '"+pId+"'";
|
||||
|
||||
st.executeUpdate(query);
|
||||
|
||||
return 0;
|
||||
}
|
||||
catch(SQLException e){
|
||||
e.printStackTrace();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package de.katho.kBorrow.gui;
|
||||
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JTabbedPane;
|
||||
import javax.swing.UIManager;
|
||||
@@ -25,7 +24,8 @@ import javax.swing.JTable;
|
||||
public class MainWindow implements ActionListener {
|
||||
|
||||
private DbConnector dbCon;
|
||||
private boolean userModeSave = true;
|
||||
private boolean userModeEdit = false;
|
||||
private int editId;
|
||||
|
||||
private JFrame frame;
|
||||
private JTextField textField;
|
||||
@@ -42,6 +42,7 @@ public class MainWindow implements ActionListener {
|
||||
private UserTableModel userTableModel;
|
||||
private JScrollPane scrollUserList;
|
||||
private JPanel panelUserList;
|
||||
private JButton btnUserCancel;
|
||||
|
||||
|
||||
/**
|
||||
@@ -100,17 +101,18 @@ public class MainWindow implements ActionListener {
|
||||
panelUser.add(panelUserList);
|
||||
panelUserList.setLayout(new BorderLayout(0, 0));
|
||||
|
||||
userTable = new JTable(new UserTableModel(this.dbCon));
|
||||
userTableModel = new UserTableModel(this.dbCon);
|
||||
userTable = new JTable(userTableModel);
|
||||
userTable.setFillsViewportHeight(true);
|
||||
userTableModel = (UserTableModel)userTable.getModel();
|
||||
|
||||
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);
|
||||
|
||||
UserDeleteTableButton userDeleteTableButton = new UserDeleteTableButton("L<EFBFBD>schen", this.userTable);
|
||||
userTable.getColumnModel().getColumn(4).setCellEditor(userDeleteTableButton);
|
||||
userTable.getColumnModel().getColumn(4).setCellRenderer(userDeleteTableButton);
|
||||
|
||||
UserEditTableButton userEditTableButton = new UserEditTableButton("Bearbeiten", this.userTable, this);
|
||||
userTable.getColumnModel().getColumn(3).setCellEditor(userEditTableButton);
|
||||
userTable.getColumnModel().getColumn(3).setCellRenderer(userEditTableButton);
|
||||
|
||||
scrollUserList = new JScrollPane(userTable);
|
||||
panelUserList.add(scrollUserList);
|
||||
scrollUserList.setViewportBorder(null);
|
||||
@@ -138,12 +140,11 @@ public class MainWindow implements ActionListener {
|
||||
|
||||
btnUserSave = new JButton("Speichern");
|
||||
btnUserSave.addActionListener(this);
|
||||
btnUserSave.setBounds(333, 58, 86, 20);
|
||||
btnUserSave.setBounds(333, 27, 103, 20);
|
||||
|
||||
lblUserStatus = new JLabel("");
|
||||
lblUserStatus.setBounds(6, 89, 413, 14);
|
||||
|
||||
|
||||
panelUserEdit.add(this.lblUserName);
|
||||
panelUserEdit.add(this.textFieldUserName);
|
||||
panelUserEdit.add(this.lblUserSurname);
|
||||
@@ -152,12 +153,48 @@ public class MainWindow implements ActionListener {
|
||||
panelUserEdit.add(this.btnUserSave);
|
||||
panelUserEdit.add(this.lblUserStatus);
|
||||
|
||||
btnUserCancel = new JButton("Abbrechen");
|
||||
btnUserCancel.setBounds(333, 57, 103, 23);
|
||||
btnUserCancel.addActionListener(this);
|
||||
panelUserEdit.add(btnUserCancel);
|
||||
}
|
||||
|
||||
public void setModeEditUser(int pId, String pName, String pSurname){
|
||||
this.userModeEdit = true;
|
||||
this.editId = pId;
|
||||
this.textFieldUserName.setText(pName);
|
||||
this.textFieldUserSurname.setText(pSurname);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if(e.getSource() == this.btnUserSave){
|
||||
if(this.userModeSave){
|
||||
if(this.userModeEdit){
|
||||
int re = this.userTableModel.editUser(this.editId, this.textFieldUserName.getText(), this.textFieldUserSurname.getText());
|
||||
|
||||
switch(re){
|
||||
case 0:
|
||||
this.lblUserStatus.setText("Benutzer-ID \""+this.editId+"\" erfolgreich bearbeitet.");
|
||||
this.textFieldUserName.setText("");
|
||||
this.textFieldUserSurname.setText("");
|
||||
break;
|
||||
|
||||
case 1:
|
||||
this.lblUserStatus.setText("SQL-Fehler. Benutzer konnte nicht bearbeitet werden.");
|
||||
this.textFieldUserName.setText("");
|
||||
this.textFieldUserSurname.setText("");
|
||||
break;
|
||||
|
||||
case 2:
|
||||
this.lblUserStatus.setText("Entweder Vor- oder Nachname m<>ssen ausgef<65>llt sein.");
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
this.userModeEdit = false;
|
||||
this.editId = 0;
|
||||
}
|
||||
else {
|
||||
int re = this.userTableModel.createUser(this.textFieldUserName.getText(), this.textFieldUserSurname.getText());
|
||||
|
||||
switch (re){
|
||||
@@ -178,11 +215,11 @@ public class MainWindow implements ActionListener {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Hier kommt die Funktion rein, die Benutzer editieren l<>sst.
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(e.getSource() == this.btnUserCancel){
|
||||
this.userModeEdit = false;
|
||||
this.textFieldUserName.setText("");
|
||||
this.textFieldUserSurname.setText("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,95 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
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));
|
||||
}
|
||||
|
||||
}
|
||||
58
src/de/katho/kBorrow/gui/UserDeleteTableButton.java
Normal file
58
src/de/katho/kBorrow/gui/UserDeleteTableButton.java
Normal file
@@ -0,0 +1,58 @@
|
||||
package de.katho.kBorrow.gui;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.AbstractCellEditor;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.table.TableCellEditor;
|
||||
import javax.swing.table.TableCellRenderer;
|
||||
|
||||
public class UserDeleteTableButton extends AbstractCellEditor implements TableCellRenderer, TableCellEditor {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -886584066497429394L;
|
||||
|
||||
private JButton buttonR;
|
||||
private JButton buttonE;
|
||||
private String label;
|
||||
private JTable table;
|
||||
private UserTableModel model;
|
||||
|
||||
public UserDeleteTableButton(String pLabel, JTable pTable){
|
||||
this.label = pLabel;
|
||||
this.table = pTable;
|
||||
this.model = (UserTableModel) pTable.getModel();
|
||||
this.buttonR = new JButton(pLabel);
|
||||
this.buttonE = new JButton(pLabel);
|
||||
|
||||
this.buttonE.addActionListener(new ActionListener(){
|
||||
public void actionPerformed(ActionEvent e){
|
||||
fireEditingStopped();
|
||||
|
||||
int row = table.getSelectedRow();
|
||||
int id = model.getUserId(row);
|
||||
|
||||
model.deleteUser(id);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public Object getCellEditorValue() {
|
||||
return this.label;
|
||||
}
|
||||
|
||||
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
|
||||
return this.buttonE;
|
||||
}
|
||||
|
||||
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
|
||||
return this.buttonR;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
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");
|
||||
}
|
||||
|
||||
}
|
||||
59
src/de/katho/kBorrow/gui/UserEditTableButton.java
Normal file
59
src/de/katho/kBorrow/gui/UserEditTableButton.java
Normal file
@@ -0,0 +1,59 @@
|
||||
package de.katho.kBorrow.gui;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.AbstractCellEditor;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.table.TableCellEditor;
|
||||
import javax.swing.table.TableCellRenderer;
|
||||
|
||||
public class UserEditTableButton extends AbstractCellEditor implements TableCellRenderer, TableCellEditor {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -886584066497429394L;
|
||||
|
||||
private JButton buttonR;
|
||||
private JButton buttonE;
|
||||
private String label;
|
||||
private MainWindow mainwindow;
|
||||
private UserTableModel model;
|
||||
private JTable table;
|
||||
|
||||
public UserEditTableButton(String pLabel, JTable pTable, MainWindow pMainWindow){
|
||||
this.label = pLabel;
|
||||
this.table = pTable;
|
||||
this.model = (UserTableModel)pTable.getModel();
|
||||
this.mainwindow = pMainWindow;
|
||||
this.buttonR = new JButton(pLabel);
|
||||
this.buttonE = new JButton(pLabel);
|
||||
|
||||
this.buttonE.addActionListener(new ActionListener(){
|
||||
public void actionPerformed(ActionEvent e){
|
||||
fireEditingStopped();
|
||||
|
||||
int row = table.getSelectedRow();
|
||||
|
||||
mainwindow.setModeEditUser(model.getUserId(row), model.getUserName(row), model.getUserSurname(row));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public Object getCellEditorValue() {
|
||||
return this.label;
|
||||
}
|
||||
|
||||
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
|
||||
return this.buttonE;
|
||||
}
|
||||
|
||||
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
|
||||
return this.buttonR;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,8 +14,8 @@ public class UserTableModel extends AbstractTableModel {
|
||||
*/
|
||||
private static final long serialVersionUID = 435829735305533728L;
|
||||
private DbConnector dbCon;
|
||||
private String[] header = {"Vorname", "Nachname", "Bearbeiten", "L<EFBFBD>schen"};
|
||||
private ArrayList<KUser> data;
|
||||
private String[] header = {"ID", "Vorname", "Nachname", "", ""};
|
||||
private ArrayList<KUser> data = new ArrayList<KUser>();
|
||||
|
||||
public UserTableModel(DbConnector pDbCon){
|
||||
this.dbCon = pDbCon;
|
||||
@@ -28,15 +28,25 @@ public class UserTableModel extends AbstractTableModel {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
public int getRowCount() {
|
||||
return this.data.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValueAt(int row, int col) {
|
||||
if(col == 0) return this.data.get(row).getName();
|
||||
else if (col == 1) return this.data.get(row).getSurname();
|
||||
else return null;
|
||||
switch(col){
|
||||
case 0:
|
||||
return String.valueOf(this.data.get(row).getId());
|
||||
|
||||
case 1:
|
||||
return this.data.get(row).getName();
|
||||
|
||||
case 2:
|
||||
return this.data.get(row).getSurname();
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public String getColumnName(int index){
|
||||
@@ -50,7 +60,7 @@ public class UserTableModel extends AbstractTableModel {
|
||||
|
||||
// Die Funktion muss differenzierter werden
|
||||
public boolean isCellEditable(int row, int col){
|
||||
if (col > 1) return true;
|
||||
if (col > 2) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -67,8 +77,11 @@ public class UserTableModel extends AbstractTableModel {
|
||||
}
|
||||
|
||||
public boolean deleteUser(int id){
|
||||
if (dbCon.deleteUser(id)){
|
||||
updateTable();
|
||||
if(dbCon.deleteUser(id)){
|
||||
int row = this.getRowFromId(id);
|
||||
this.data.remove(row);
|
||||
this.fireTableRowsDeleted(row, row);
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -81,4 +94,32 @@ public class UserTableModel extends AbstractTableModel {
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
public int editUser(int pId, String pName, String pSurname) {
|
||||
int status = this.dbCon.editUser(pId, pName, pSurname);
|
||||
|
||||
if(status == 0){
|
||||
int row = this.getRowFromId(pId);
|
||||
|
||||
this.data.get(row).setName(pName);
|
||||
this.data.get(row).setSurname(pSurname);
|
||||
this.fireTableRowsUpdated(row, row);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param pId
|
||||
* @return Returns -1 if there is no row for the given id.
|
||||
*/
|
||||
private int getRowFromId(int pId){
|
||||
for(KUser elem : this.data){
|
||||
if(elem.getId() == pId) return data.indexOf(elem);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user