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 boolean createUser(String pName, String pSurname);
|
||||
public int createUser(String pName, String pSurname);
|
||||
public ArrayList<KUser> getUserList();
|
||||
public boolean deleteUser(int id);
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
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 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user