K
kriizz
Gast
Hallo,
ich habe nun seit ca. 3 Monanten in der Schule JAVA, also bin ich ein kompletter Neuling
Ich hänge zur Zeit an einem Problem...
Ich habe eine Tabelle, in der in der ersten Spalte "Aufgaben" stehen und in der Zweiten die Mitarbeiter aus einer Checkbox ausgewählt werden.
Die Chekcboxen auszulesen ist kein Problem. Nur muss ich wissen, welche Checkbox geändert wurde. Also welche Aufgabe quasi zur CheckBox gehört. Kann mir da jemand helfen???
ich habe nun seit ca. 3 Monanten in der Schule JAVA, also bin ich ein kompletter Neuling
Ich hänge zur Zeit an einem Problem...
Ich habe eine Tabelle, in der in der ersten Spalte "Aufgaben" stehen und in der Zweiten die Mitarbeiter aus einer Checkbox ausgewählt werden.
Die Chekcboxen auszulesen ist kein Problem. Nur muss ich wissen, welche Checkbox geändert wurde. Also welche Aufgabe quasi zur CheckBox gehört. Kann mir da jemand helfen???
Code:
package tasks;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.BorderFactory;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.DefaultCellEditor;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;
import moduls.MysqlConnect;
public class taskGiveGui extends JPanel {
/**
* Liest aus DB aus, erstellt Array mit Länger der Einträge und füllt das Array mit den Namen.
* @return Inhalt für ComboBox
*/
public static String[] selectComboBox() {
// arraylaenge auswählen
int i = 0;
try {
java.sql.Connection conn = MysqlConnect.connect(); // Verbindung zur DB
Statement stmt = conn.createStatement();
ResultSet rs = null;
rs = stmt.executeQuery("SELECT firstname,surname FROM login");
while ( rs.next() ){
i++;
}
throw new Exception();
} catch(Exception e) {
System.out.println("da stimmt was nicht");
}
int n = i;
String[] titles = new String[n];
try {
java.sql.Connection conn = MysqlConnect.connect(); // Verbindung zur DB
Statement stmt = conn.createStatement();
ResultSet rs = null;
rs = stmt.executeQuery("SELECT firstname,surname FROM login");
titles[0] ="Bitte wählen";
int j = 1;
while ( rs.next() ){
titles[j] = rs.getString(2)+","+ rs.getString(1);
j++;
}
throw new Exception();
} catch(Exception e) {
System.out.println("da stimmt was nicht");
}
return titles;
}
/** Aufgaben aus DB lesen **/
public static Object[][] selectTasks() {
int i = 0;
try {
java.sql.Connection conn = MysqlConnect.connect(); // Verbindung zur DB
Statement stmt = conn.createStatement();
ResultSet rs = null;
rs = stmt.executeQuery("SELECT task FROM tasks");
while ( rs.next() ){
i++;
}
throw new Exception();
} catch(Exception e) {
System.out.println("da stimmt was nicht");
}
int n = i;
Object[][] tasks = new Object[n][2];
try {
java.sql.Connection conn = MysqlConnect.connect(); // Verbindung zur DB
Statement stmt = conn.createStatement();
ResultSet rs = null;
rs = stmt.executeQuery("SELECT task FROM tasks");
int j = 0;
while ( rs.next() ){
tasks[j][0] = rs.getString(1);
tasks[j][1] = "Bitte wählen";
j++;
}
throw new Exception();
} catch(Exception e) {
System.out.println("da stimmt was nicht");
}
return tasks;
}
/**
* Tabelle zusammenbauen
*/
static class TableModel extends AbstractTableModel {
Object[] titles = {"Aufgabe", "Mitarbeiter"};
Object[][] contents = selectTasks();
/** Liefert den Namen der geforderten Spalte.
* @return Name der Spalte.
*/
public String getColumnName(int col) {
return titles[col].toString();
}
/* Liefert die Anzahl der Zeilen zurück.
* @return die Anzahl der Zeilen.
*/
public int getRowCount() { return contents.length; }
/* Liefert die Anzahl der Spalten zurück.
* @return die Anzahl der Spalten.
*/
public int getColumnCount() { return titles.length; }
/** Liefert den Wert in der geforderten Zeile/Spalte.
* @return Wert in der geforderten Zeile/Spalte.
*/
public Object getValueAt(int row, int col) {
return contents[row][col];
}
public void setValueAt(Object value, int row, int col) {
contents[row][col] = value;
fireTableCellUpdated(row, col); // Listener informieren, dass sich etwas geändert hat
}
/** Gibt an, ob der Wert in der geforderten Zeile/Spalte editierbar sein soll.
* @return wahr wenn editierbar, falsch wenn nicht.
*/
public boolean isCellEditable(int row, int col) {
if (col == 1) {
return true;
} else {
return false;
}
}
/** Gibt an, was für ein Datentyp in der geforderten Spalte steht.
* @return Datentyp der Spalte (Wrapper Klasse für primitive Datentypen).
*/
public Class getColumnClass(int col) {
if ( col <= 1 ) {
return String.class;
} else {
return Boolean.class;
}
}
}
/**
* Tabelle in ScrollPane setzen
* @return ScrollPane für den MainFrame
*/
public static JComponent createTable() {
Object[] items = selectComboBox();
JComboBox comboBox = new JComboBox(items); // ComboBox mit Inhalt initialisieren
comboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
System.out.println(e.getSource());
}});
JTable table = new JTable(new TableModel()); // Tabelle erzeugen
TableColumn colModel = table.getColumnModel().getColumn(1); // Spaltenmodell holen
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
JTableHeader header = table.getTableHeader();
header.setBackground(new Color( 255, 180, 0));
colModel.setCellEditor(new DefaultCellEditor(comboBox)); // comboB
table.setShowVerticalLines(false);
table.setBackground(Color.WHITE);
header.setAlignmentY(LEFT_ALIGNMENT);
header.setFont(new Font("TimesRoman",Font.BOLD,14));
JScrollPane pane = new JScrollPane(table);
pane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
return pane;
}
}