Weitere Arbeit an dem Tabellemodell, sowie zugehörigen Actionlistenern,
um verschiedenen Buttons in Tabellen unterschiedliche Aktionen zu hinterlegen.
This commit is contained in:
@@ -6,7 +6,8 @@ import de.katho.kBorrow.data.KUser;
|
|||||||
|
|
||||||
public interface DbConnector {
|
public interface DbConnector {
|
||||||
|
|
||||||
public boolean createUser(String pName, String pSurname);
|
public int createUser(String pName, String pSurname);
|
||||||
public ArrayList<KUser> getUserList();
|
public ArrayList<KUser> getUserList();
|
||||||
|
public boolean deleteUser(int id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,14 @@ import de.katho.kBorrow.data.KUser;
|
|||||||
public class SqlConnector implements DbConnector{
|
public class SqlConnector implements DbConnector{
|
||||||
|
|
||||||
@Override
|
@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
|
// TODO Auto-generated method stub
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -18,4 +23,10 @@ public class SqlConnector implements DbConnector{
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteUser(int id) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -181,17 +181,39 @@ public class SqliteConnector implements DbConnector {
|
|||||||
|
|
||||||
return text.toString();
|
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 {
|
try {
|
||||||
Statement st = this.connection.createStatement();
|
Statement st = this.connection.createStatement();
|
||||||
String query = "INSERT INTO user (name, surname) VALUES ('"+pName+"', '"+pSurname+"')";
|
String query = "INSERT INTO user (name, surname) VALUES ('"+pName+"', '"+pSurname+"')";
|
||||||
|
|
||||||
st.executeUpdate(query);
|
st.executeUpdate(query);
|
||||||
|
|
||||||
return true;
|
return 0;
|
||||||
|
|
||||||
} catch (SQLException e) {
|
} 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();
|
e.printStackTrace();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package de.katho.kBorrow.gui;
|
package de.katho.kBorrow.gui;
|
||||||
|
|
||||||
|
import javax.swing.JCheckBox;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JTabbedPane;
|
import javax.swing.JTabbedPane;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
@@ -11,21 +12,12 @@ import javax.swing.JPanel;
|
|||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JTextField;
|
import javax.swing.JTextField;
|
||||||
import javax.swing.border.TitledBorder;
|
import javax.swing.border.TitledBorder;
|
||||||
import javax.swing.table.AbstractTableModel;
|
|
||||||
import javax.swing.table.TableModel;
|
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import de.katho.kBorrow.Main;
|
|
||||||
import de.katho.kBorrow.db.DbConnector;
|
import de.katho.kBorrow.db.DbConnector;
|
||||||
|
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
@@ -111,8 +103,13 @@ public class MainWindow implements ActionListener {
|
|||||||
userTable = new JTable(new UserTableModel(this.dbCon));
|
userTable = new JTable(new UserTableModel(this.dbCon));
|
||||||
userTable.setFillsViewportHeight(true);
|
userTable.setFillsViewportHeight(true);
|
||||||
userTableModel = (UserTableModel)userTable.getModel();
|
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);
|
scrollUserList = new JScrollPane(userTable);
|
||||||
panelUserList.add(scrollUserList);
|
panelUserList.add(scrollUserList);
|
||||||
@@ -161,14 +158,24 @@ public class MainWindow implements ActionListener {
|
|||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
if(e.getSource() == this.btnUserSave){
|
if(e.getSource() == this.btnUserSave){
|
||||||
if(this.userModeSave){
|
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.lblUserStatus.setText("Benutzer \""+this.textFieldUserName.getText()+" "+this.textFieldUserSurname.getText()+"\" erfolgreich hinzugef<65>gt.");
|
||||||
this.textFieldUserName.setText("");
|
this.textFieldUserName.setText("");
|
||||||
this.textFieldUserSurname.setText("");
|
this.textFieldUserSurname.setText("");
|
||||||
this.userTableModel.updateTable();
|
break;
|
||||||
}
|
|
||||||
else {
|
case 1:
|
||||||
this.lblUserStatus.setText("Benutzer konnte nicht erstellt werden.");
|
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 {
|
else {
|
||||||
|
|||||||
95
src/de/katho/kBorrow/gui/TableButton.java
Normal file
95
src/de/katho/kBorrow/gui/TableButton.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/de/katho/kBorrow/gui/UserDeleteListener.java
Normal file
24
src/de/katho/kBorrow/gui/UserDeleteListener.java
Normal 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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
13
src/de/katho/kBorrow/gui/UserEditListener.java
Normal file
13
src/de/katho/kBorrow/gui/UserEditListener.java
Normal 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");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -14,7 +14,7 @@ public class UserTableModel extends AbstractTableModel {
|
|||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 435829735305533728L;
|
private static final long serialVersionUID = 435829735305533728L;
|
||||||
private DbConnector dbCon;
|
private DbConnector dbCon;
|
||||||
private String[] header = {"Vorname", "Nachname", "Aktion"};
|
private String[] header = {"Vorname", "Nachname", "Bearbeiten", "L<EFBFBD>schen"};
|
||||||
private ArrayList<KUser> data;
|
private ArrayList<KUser> data;
|
||||||
|
|
||||||
public UserTableModel(DbConnector pDbCon){
|
public UserTableModel(DbConnector pDbCon){
|
||||||
@@ -47,4 +47,38 @@ public class UserTableModel extends AbstractTableModel {
|
|||||||
this.data = this.dbCon.getUserList();
|
this.data = this.dbCon.getUserList();
|
||||||
this.fireTableDataChanged();
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user