Hallo! Ich bin neu hier und brauche mal dringend eure Hilfe.
Ich habe eine JTable und will in diese Table Werte eintragen und dann auch übernehmen wenn die Zelle verlassen wird bzw Enter gedrückt wird. Leider funktioniert das nicht...die Table ruft die setValueAt Methode auch nicht auf.???:L
Hier der JDialog mit der Table:
Und das ist das Model:
Vielen Dank im Vorraus
Daniel
Ich habe eine JTable und will in diese Table Werte eintragen und dann auch übernehmen wenn die Zelle verlassen wird bzw Enter gedrückt wird. Leider funktioniert das nicht...die Table ruft die setValueAt Methode auch nicht auf.???:L
Hier der JDialog mit der Table:
Java:
public class FehlerkategorieDialog extends JDialog{
/** Scrollpane fuer die Tabelle */
private JScrollPane sTabelle;
/** Tabelle fuer die Queue-Informationen */
private JTable tCategory;
/** TableSorter zum sortieren der Spalten */
private TableSorter sorter;
/** TableModel fuer die QueueInformationen */
private FehlerkategorieModel model;
/** MenuBar */
private JMenuBar menuBar;
/** DateiMenu */
private JMenu menuDatei;
/** MenuItem zum Speichern der Bearbeitungen */
private JMenuItem menuItemSpeichern;
/** MenuItem zum Beenden */
private JMenuItem menuItemBeenden;
/** Menu fuer Bearbeiten */
private JMenu menuFehlerkategorie;
/** MenuItem zum Aktualisieren */
private JMenuItem menuItemEinfuegen;
/** MenuItem zum Anzeigen der Nachrichten einer Queue */
private JMenuItem menuItemBearbeiten;
/** MenuItem zum Suchen eines Prozesskontextes */
private JMenuItem menuItemEntfernen;
private static JLabel statusBar = new JLabel();
/**
* Konstruktor erzeugt eine neue Instanz der Klasse
* @param pTitle der Titel, der in der Kopfzeile angezeigt werden soll.
*/
public FehlerkategorieDialog(String pTitle) {
setTitle(pTitle);
initialize();
Refresh.refreshFehlerkategorieDialog();
aktualisieren();
pack();
}
/**
* Baut die JMenuBar der Anwendung auf.
* @return die MenuBar der Anwendung
*/
private JMenuBar buildMenuBar() {
menuBar = new JMenuBar();
//<=============================================
/** Datei-Menue aufbauen */
menuDatei = new JMenu("Datei");
menuDatei.setMnemonic('D');
//<---------------------------------------------
menuItemSpeichern = new JMenuItem("Speichern");
menuItemSpeichern.setMnemonic('S');
menuItemSpeichern.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent pE) {
FehlerkategorieAccess.feKaSpeichern();
}
}
);
menuDatei.add(menuItemSpeichern);
//----------------------------------------------->
//<---------------------------------------------
menuItemBeenden = new JMenuItem("Beenden");
menuItemBeenden.setMnemonic('B');
menuItemBeenden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent pE) {
//Refresh um geaenderte Daten im Model bereitzustellen
Refresh.refreshFehlerkategorieDialog();
closeWindow();
}
}
);
menuDatei.add(menuItemBeenden);
//----------------------------------------------->
//===============================================>
//<===============================================
/** Bearbeiten-Menue aufbauen */
menuFehlerkategorie = new JMenu("Fehlerkategorie");
menuFehlerkategorie.setMnemonic('F');
//<------------------------------------------------
menuItemEinfuegen = new JMenuItem("Hinzufuegen");
menuItemEinfuegen.setMnemonic('A');
menuItemEinfuegen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent pE) {
model.addRow();
model.fireTableDataChanged();
}
}
);
menuFehlerkategorie.add(menuItemEinfuegen);
//------------------------------------------------>
/**
//<-----------------------------------------------
menuItemBearbeiten = new JMenuItem("Aendern");
menuItemBearbeiten.setMnemonic('A');
menuItemBearbeiten.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent pE) {
//FehlerkategorieModel.alterRow();
}
}
);
menuFehlerkategorie.add(menuItemBearbeiten);
//-------------------------------------------------->
*/
//<-----------------------------------------------
menuItemEntfernen = new JMenuItem("Entfernen");
menuItemEntfernen.setMnemonic('E');
menuItemEntfernen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent pE) {
if (tCategory.getSelectedRow() == -1){
setzeStatusBar();
}
else{
//FehlerkategorieModel.deleteRow(tCategory.getValueAt(tCategory.getSelectedRow(), 0).toString(),tCategory.getSelectedRow(), tCategory.getSelectedColumn());
FehlerkategorieUpdater.deleteFehlerkategorien(tCategory.getValueAt(tCategory.getSelectedRow(), 0).toString());
Refresh.refreshFehlerkategorieDialog();
model.fireTableDataChanged();
}
}
}
);
menuFehlerkategorie.add(menuItemEntfernen);
//-------------------------------------------------->
//====================================================>
menuBar.add(menuDatei);
menuBar.add(menuFehlerkategorie);
return menuBar;
}
/**
* Initializiert die Oberflaechenelemente
*/
protected void initialize() {
setName("PCFrame");
getContentPane().setLayout(new BorderLayout());
setJMenuBar(buildMenuBar());
tCategory = new JTable() {
public Component prepareRenderer(TableCellRenderer pRenderer, int pRowIndex, int pColIndex) {
Component _c = super.prepareRenderer(pRenderer, pRowIndex, pColIndex);
if (pRowIndex % 2 == 0 && !isCellSelected(pRowIndex, pColIndex)) {
_c.setBackground(Color.getHSBColor(82, 22, 255));
} else {
if (!isCellSelected(pRowIndex, pColIndex)) {
_c.setBackground(getBackground());
}
}
return _c;
}
};
//DefaultTableModel model = new FehlerkategorieModel();
//tCategory.setDefaultEditor(String.class, new TableEditor());
tCategory.setName("FeKaTable");
tCategory.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tCategory.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
/*tCategory.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
System.out.println(e);
System.out.println(tCategory.getValueAt(tCategory.getEditingRow(),tCategory.getEditingColumn()));
model.setValueAt("dsfs",2,1);
model.fireTableDataChanged();
}
});*/
/*tCategory.addKeyListener(new KeyListener(){
public void keyPressed(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
if(e.getKeyChar()== e.VK_ENTER){
//TableModel tm = tCategory.getModel();
//System.out.println(tCategory.getValueAt(tCategory.getSelectedRow(), tCategory.getSelectedColumn()));
//PCToolCellEditor.getTableCellEditorComponent(tCategory, tCategory, true, 3,0);
model.setValueAt("dsfs",2,1);
for (int i = 0; i<tCategory.getEditingRow(); i++){
for (int j = 0; j<tCategory.getEditingColumn(); j++){
//tm.setValueAt(tCategory.getValueAt(tCategory.getEditingRow(), tCategory.getEditingColumn()), tCategory.getEditingRow(), tCategory.getEditingColumn());
}
}
//tCategory.getDefaultEditor(Object.class).stopCellEditing();
}
}
});*/
model = new FehlerkategorieModel();
sorter = new TableSorter(model);
sorter = new TableSorter(model);
tCategory.setModel(sorter);
sorter.setTableHeader(tCategory.getTableHeader());
sTabelle = new JScrollPane(tCategory);
statusBar.setText("STATUSBAR");
getContentPane().add(statusBar, BorderLayout.SOUTH);
getContentPane().add(sTabelle, BorderLayout.CENTER);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent pE) {
closeWindow();
}
});
}
/**
* Methode die der Controller aufrufen kann, damit sich das Fenster selbst akutualisiert
*
*/
public void aktualisieren(){
repaint();
}
/**
* Schliesst den Dialog
*
*/
private void closeWindow() {
hide();
dispose();
}
public static void setzeStatusBar(){
statusBar.setText("Waehlen sie zuerst einen Eintrag aus der Tabelle aus");
}
}
Und das ist das Model:
Java:
public class FehlerkategorieModel extends DefaultTableModel{
/** Name der Tabellenspalten */
private String[] COLUMN_NAMES = {"Fehlerkategorie", "Beschreibung"};
/** Typen der Tabellenspalten */
private static final Class[] COLUMN_CLASSES = {String.class, String.class};
/** Uebergabe des Vectors mit den Datensaetzen (Fehlerkat. und Beschreibung)*/
private static Object[][] uebergabeFK;
/** Temporaerer Vector, in den die aktuellen Daten geschrieben werden und am Ende
* der Methode addRow() 2 leere Strings eingefuegt werden, um eine leere
* Zeile in der Tabelle zu erhalten. Danach wird der Vector wieder der
* Methode getData uebergeben.*/
private static Vector tempData = new Vector();
/**
* @see javax.swing.table.TableModel#getColumnClass(int)
*/
public Class getColumnClass(int pColumn) {
return COLUMN_CLASSES[pColumn];
}
/**
* @see javax.swing.table.TableModel#getColumnCount()
*/
public int getColumnCount() {
return COLUMN_CLASSES.length;
}
/**
* @see javax.swing.table.TableModel#getColumnName(int)
*/
public String getColumnName(int pColumn) {
return COLUMN_NAMES[pColumn];
}
/**
* @see javax.swing.table.TableModel#getRowCount()
*/
public int getRowCount() {
return uebergabeFK.length;
}
/**
* @see javax.swing.table.TableModel#isCellEditable(int, int)
*/
public boolean isCellEditable(int pRow, int pColumn) {
boolean edit = true;
return edit;
}
/**
* @see javax.swing.table.TableModel#getValueAt(int, int)
*/
public Object getValueAt(int pRow, int pColumn) {
Object _obj = null;
/*for (int i = 0; i<=pRow; i++){
for (int j = 0; j<=pColumn; j++){
_obj = uebergabeFK[i][j];
}
}*/
_obj = uebergabeFK[pRow][pColumn];
//System.out.println(_obj);
return _obj;
}
/**
* Erhaelt die Daten aus der Datenbank und packt sie vom Vector in ein Array
* @param anzahlFK
*/
public static void getData(Vector listeFK){
uebergabeFK = new Object[(listeFK.size()/2)][2];
int vectorZaehler = 0;
for (int i = 0; i<((listeFK.size()/2));i++){
for (int j = 0; j<=1; j++){
uebergabeFK[i][j] = listeFK.get(vectorZaehler);
vectorZaehler++;
}
}
}
public void setValueAt(String pWert, int pRow, int pCol){
System.out.println("----");
System.out.println("Model: " + pWert);
uebergabeFK[pRow][pCol] = pWert;
fireTableDataChanged();
}
public static void addRow(){
System.out.println(uebergabeFK.length);
for (int i = 0; i<uebergabeFK.length; i++){
for (int j = 0; j<=1; j++){
tempData.add(uebergabeFK[i][j]);
}
}
//2 leere Strings hinzufuegen, um eine leere Zeile in der Tabelle zu erhalten.
tempData.add(" ");
tempData.add(" ");
tempData.trimToSize();
getData(tempData);
//Vector wieder leeren
tempData.removeAllElements();
}
}
Vielen Dank im Vorraus
Daniel