Eingabe von Zahlen in JTable und Fokusweitergabe

Status
Nicht offen für weitere Antworten.
H

hippo

Gast
Hallo zusammen,

ich programmiere gerade an einer Notenverwaltung. Jetzt habe ich einige Anfoderungen an meine JTable Notentabelle bei denen ich nicht weiterkomme:

Die Notentabelle sollte folgende Features haben:
- bei Eingabe einer neuen Note, die alte löschen (alter Wert 2 => Eingabe einer 1 => 21 so nicht!)
- Wird die neue Eingabe mit CR abgeschlossen, den Fokus auf die nächste Aufgabe des Schülers setzen (nicht nach unten => nach links)
- Navigation mit den Cursortasten (geht jetzt schon) => die aktuelle Zeile kennzeichnen, indem nur die Namen grün hinterlegt werden

Wer kann mir weiterhelfen?

Gruß Stefan


Code:
import java.awt.Dimension;
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

public class TestTable extends JTable {

	public class TestTableModel extends AbstractTableModel {

		String[] columnNames = { "Name", "Vorame", "A1", "A2", "A3" };

		Object[][] data = { { "Mustermann", "Max", new Integer(4), new Integer(5), new Integer(10) },
				{ "Kaiser", "Franz", new Integer(0), new Integer(3), new Integer(2) } };

		public int getColumnCount() {
			return 5;
		}

		public int getRowCount() {
			return 2;
		}

		public String getColumnName(int col) {
			return columnNames[col];
		}

		public Object getValueAt(int row, int col) {
			return data[row][col];
		}

		public boolean isCellEditable(int row, int col) {
			return col > 1;
		}

	}

	public TestTable() {
		this.setModel(new TestTableModel());
	}

	public static void main(String[] args) {
		JFrame fr = new JFrame();
		fr.setContentPane(new TestTable());
		fr.setPreferredSize(new Dimension(250, 150));
		fr.pack();
		fr.setVisible(true);
	}

}
 

André Uhres

Top Contributor
hippo hat gesagt.:
..den Fokus auf die nächste Aufgabe des Schülers setzen (nicht nach unten => nach links)..
Nach links, du fängst also mit der letzten Aufgabe des Schülers an?
Und wenn für den Schüler keine Aufgaben mehr da sind, dann letzte Aufgabe des nächsten Schülers?
Würdest du das bitte aufklären :?
 
H

hippo

Gast
Ich meine natürlich nach rechts. :wink: Sollte in der Programmierung aber wahrscheinlich kein großer Unterschied sein.
 

André Uhres

Top Contributor
hippo hat gesagt.:
Ich meine natürlich nach rechts...
Code:
//package tableDemo; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.table.*; 
public class TabellenNavigation_1 extends JFrame { 
    public TabellenNavigation_1() { 
        setTitle("Drücke Enter zum Navigieren"); 
        setDefaultCloseOperation( EXIT_ON_CLOSE ); 
        setSize(400,300); 
        setLocationRelativeTo( null ); 
        tabelle = new JTable( 
                new Object [][] { 
                    { "Mustermann", "Max", new Integer(4), new Integer(5), new Integer(10) }, 
                    { "Kaiser", "Franz", new Integer(0), new Integer(3), new Integer(2) } 
        }, 
                new String [] { 
            "Name", "Vorname", "A1", "A2", "A3" 
        }) { 
            public boolean isCellEditable(final int zeile, final int spalte) { 
                return spalte > 1; 
            } 
            Class[] types = new Class [] { 
                String.class, String.class, Integer.class, Integer.class, Integer.class 
            }; 
            
            public Class getColumnClass(final int columnIndex) { 
                return types [columnIndex]; 
            } 
            public Component prepareRenderer( 
                    final TableCellRenderer renderer, final int row, final int column) { 
                Component c = super.prepareRenderer(renderer, row, column); 
                c.setBackground(Color.white); 
                if (isRowSelected(row) && column < 2) 
                    c.setBackground(BGD_COLOR); 
                return c; 
            } 
        }; 
        getContentPane().add( new JScrollPane( tabelle ) ); 
        tabelle.addKeyListener(new KeyAdapter(){ 
            public void keyReleased(final KeyEvent e){ 
                tabelleKeyReleased(e); 
            } 
        }); 
        tabelle.changeSelection(0,2,false,false); 
        
        //Zum Editieren muss die Tabelle sichtbar sein !
        setVisible(true); 
        edit(tabelle.getSelectedRow(), tabelle.getSelectedColumn()); 
    } 
    private void tabelleKeyReleased(final KeyEvent e){ 
        int zeile = tabelle.getSelectedRow(); 
        int spalte = tabelle.getSelectedColumn(); 
        if(e.getKeyCode() != KeyEvent.VK_ENTER){ 
            edit(zeile, spalte); 
            return; 
        } 
        int zeilenAnzahl = tabelle.getRowCount(); 
        int spaltenAnzahl = tabelle.getColumnCount(); 
        do{ 
            spalte++; 
            if (spalte == spaltenAnzahl) { 
                spalte = 0; 
                zeile++; 
            } 
            if (zeile == zeilenAnzahl) { 
                zeile = 0; 
            } 
            //  Zurück zum Startpunkt, rausgehen. 
            //  (für den Fall wo keine Zelle editierbar ist) 
            if (zeile == tabelle.getSelectedRow() 
            &&  spalte == tabelle.getSelectedColumn()) { 
                break; 
            } 
        }while (! tabelle.isCellEditable(zeile, spalte) ); 
        tabelle.changeSelection(zeile, spalte, false, false); 
        edit(zeile, spalte); 
    } 
    private void edit(final int row, final int column){ 
        tabelle.editCellAt(row, column); 
        if(tabelle.getCellEditor()!=null){ 
            tabelle.getEditorComponent().requestFocusInWindow(); 
            JTextField text = (JTextField)tabelle.getEditorComponent(); 
            text.selectAll(); 
        } 
    } 
    private JTable tabelle; 
    private final Color BGD_COLOR = new Color(173,222,173);
    public static void main(final String[] args) { new TabellenNavigation_1();} 
}
 
H

hippo

Gast
:toll: Super! Danke. Funktioniert gut, jetzt muss ich erst einmal verstehen was Du da so gezaubert hast :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Eingabe von Zahlen in TextArea AWT, Swing, JavaFX & SWT 2
J Swing JButton durch Eingabe von Zahlen in JTextFields aktivieren AWT, Swing, JavaFX & SWT 3
B Pop-Up eingabe für Zahlen AWT, Swing, JavaFX & SWT 5
A JOptionPane OK ohne Eingabe abfangen AWT, Swing, JavaFX & SWT 10
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
G JTextField Eingabe in DB speichern AWT, Swing, JavaFX & SWT 68
F JavaFX Tabelle mit gespeicherten Eingabe Werten AWT, Swing, JavaFX & SWT 8
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
L PasswordField Eingabe verstecken AWT, Swing, JavaFX & SWT 2
R jTextField Eingabe überprüfen AWT, Swing, JavaFX & SWT 2
L TextField Eingabe in andere GUI übernehmen AWT, Swing, JavaFX & SWT 1
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
V Swing Eingabe aus Textfeld abholen AWT, Swing, JavaFX & SWT 6
A Prüfung einer Eingabe auf Gleitkommazahl AWT, Swing, JavaFX & SWT 5
U Java FX Warten auf Textfield eingabe AWT, Swing, JavaFX & SWT 17
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
P JTable - bei Eingabe Selektion AWT, Swing, JavaFX & SWT 0
U Eingabe von TextField in variable speichern AWT, Swing, JavaFX & SWT 2
D JavaFX Eingabe im GUI AWT, Swing, JavaFX & SWT 5
I JavaFX TextField auf Eingabe prüfen AWT, Swing, JavaFX & SWT 3
F JavaFX JavaFX HTMLEditor-Eingabe in Textarea als HTML anzeigen AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
J Text bei Eingabe löschen AWT, Swing, JavaFX & SWT 5
D JavaFX Textfeld Eingabe validieren AWT, Swing, JavaFX & SWT 5
A JTable Cell Eingabe AWT, Swing, JavaFX & SWT 6
X Eingabe in einem Ausgabefeld anzeigen lassen AWT, Swing, JavaFX & SWT 11
F Swing TextField Eingabe in Variable umwandeln um zum Beispiel zu rechnen. AWT, Swing, JavaFX & SWT 3
G JavaFX TextField Eingabe formatieren/einschränken AWT, Swing, JavaFX & SWT 2
S Swing JFormattedTextField - bei nicht korrekter Eingabe Inhalt überschreiben AWT, Swing, JavaFX & SWT 5
C Swing JTextfield hängt sich bei Eingabe auf AWT, Swing, JavaFX & SWT 6
A Auf eingabe warten AWT, Swing, JavaFX & SWT 5
R JTextField Eingabe bestimmen AWT, Swing, JavaFX & SWT 5
S JTable - Auf spezielle Eingabe nicht reagieren. AWT, Swing, JavaFX & SWT 5
N Filternde Combobox in JTable verliert Fokus nach erster Eingabe AWT, Swing, JavaFX & SWT 2
M Swing Eingabe auf JTextField automatisch ausgeben auf JLabel AWT, Swing, JavaFX & SWT 2
maddin86 Eingabe in Textfeld 1 synchron in Textfeld 2 ausgeben AWT, Swing, JavaFX & SWT 9
M Swing JTable cell leeren bei Eingabe AWT, Swing, JavaFX & SWT 6
N Eingabe JTextfield überprüfen AWT, Swing, JavaFX & SWT 3
earlgrey_tea KeyEvent reagiert nicht auf Eingabe ("Pausentaste") AWT, Swing, JavaFX & SWT 11
T Tooltip bei falscher Eingabe anzeigen AWT, Swing, JavaFX & SWT 2
S SWT Wie bei Widget Text auf int prüfen bei Eingabe AWT, Swing, JavaFX & SWT 5
J Eingabe im JTextField übermitteln AWT, Swing, JavaFX & SWT 6
P Swing Einfache Eingabe in JTextfield wird nicht ausgegeben AWT, Swing, JavaFX & SWT 3
B Eingabe von JTextField verwenden AWT, Swing, JavaFX & SWT 10
X Eingabe in Textfeld soll Button aktivieren... AWT, Swing, JavaFX & SWT 12
S Eingabe Überprüfung AWT, Swing, JavaFX & SWT 4
S JTable: Eingabe nur für bestimmte Var.Typen zulassen AWT, Swing, JavaFX & SWT 13
P jframe eingabe durch button AWT, Swing, JavaFX & SWT 2
S Swing Auf Enter - Eingabe reagieren AWT, Swing, JavaFX & SWT 10
U Swing Eingabe von JTextField in einen String übergeben. AWT, Swing, JavaFX & SWT 3
eskimo328 JTable nächste Zelle nach Eingabe einer Ziffer AWT, Swing, JavaFX & SWT 5
A Eingabe in JFrame AWT, Swing, JavaFX & SWT 4
aze JTextField Eingabe verbergen AWT, Swing, JavaFX & SWT 14
A Die Eingabe in einem JTextField beschränken AWT, Swing, JavaFX & SWT 5
R JTextField Eingabe speichern AWT, Swing, JavaFX & SWT 4
G JTable - bei falscher Eingabe wird alter Wert genommen. AWT, Swing, JavaFX & SWT 2
N JFormattedTextField erst Verlassen, wenn Eingabe korrekt AWT, Swing, JavaFX & SWT 6
M Prüfen, ob in einem Textfeld/Tabelle eine Eingabe erfolgt is AWT, Swing, JavaFX & SWT 11
N Eingabe eines Textfields weiterverwenden AWT, Swing, JavaFX & SWT 6
A Bei Eingabe eines Datums ein Kalender aufpoppen lassen AWT, Swing, JavaFX & SWT 2
H Adressbuch - Problem beim Speichern der Eingabe AWT, Swing, JavaFX & SWT 5
hdi JTextField - Eingabe verschlüsselt anzeigen AWT, Swing, JavaFX & SWT 2
M JFileChooser-> eingabe Vorgeben AWT, Swing, JavaFX & SWT 7
M jTextField mit Eingabe beschränken AWT, Swing, JavaFX & SWT 4
V Start Button und Wert Eingabe in ein Fenster AWT, Swing, JavaFX & SWT 2
M JTable: TableCellEditor nach Eingabe sofort beenden? AWT, Swing, JavaFX & SWT 3
B Textfeld, Rollbaken: Eingabe klappt nicht AWT, Swing, JavaFX & SWT 2
S JTextField - Eingabe speichern AWT, Swing, JavaFX & SWT 2
I Tastur eingabe geht nicht (wenn Button vorhanden) AWT, Swing, JavaFX & SWT 5
C jComboBox während eingabe kontextabhängig vorausfüllen AWT, Swing, JavaFX & SWT 3
K Textfeld Programm soll auf Eingabe warten! AWT, Swing, JavaFX & SWT 4
V JTextField - Mehrfachselektion und Eingabe möglich? AWT, Swing, JavaFX & SWT 2
G Eingabe auslesen mit JOptionPane AWT, Swing, JavaFX & SWT 2
I Prüfen einer Eingabe in JTextField, Fokusverlust AWT, Swing, JavaFX & SWT 2
sparrow JComboBox soll Selektion anhand der Eingabe ändern AWT, Swing, JavaFX & SWT 2
S Eingabe des Textfeldes in Variable speichern AWT, Swing, JavaFX & SWT 7
C JTextField Eingabe prüfen AWT, Swing, JavaFX & SWT 4
L JTextField verweigert die Eingabe AWT, Swing, JavaFX & SWT 6
M JTextField nach erfolgreicher Eingabe leeren? AWT, Swing, JavaFX & SWT 2
W Auf eine Eingabe warten? AWT, Swing, JavaFX & SWT 2
R JTable, automatischer resize der Zellen nach einer Eingabe AWT, Swing, JavaFX & SWT 4
M Position von Eingabe-Fenster AWT, Swing, JavaFX & SWT 5
G GUI - Inhalte wechseln (Eingabe-Assistenten programmieren) AWT, Swing, JavaFX & SWT 2
G Textfeldgröße während Eingabe ändern AWT, Swing, JavaFX & SWT 4
Z immer Problem mit Eingabe durch JTextField und JTree AWT, Swing, JavaFX & SWT 7
J JTextfield Eingabe einschränken AWT, Swing, JavaFX & SWT 4
S Eingabe einschränken bei TextField AWT, Swing, JavaFX & SWT 19
D Intelligente Eingabe AWT, Swing, JavaFX & SWT 3
W Auf Eingabe von Return reagieren AWT, Swing, JavaFX & SWT 4
F Eingabe in JPasswordField auf vier Zeichen beschränken AWT, Swing, JavaFX & SWT 3
chik Java Komponente mit formatierter Eingabe? AWT, Swing, JavaFX & SWT 5
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
A Swing nur Zahlen im Spinner(Textfeld) eingeben ! AWT, Swing, JavaFX & SWT 16
MrSnake Zahlen in Tabellenzelle zentrieren AWT, Swing, JavaFX & SWT 3
D JavaFX Nur Zahlen in Textfield AWT, Swing, JavaFX & SWT 4
R Low-Res OCR einzelner Buchstaben und mehrstelliger Zahlen - Ideen gesucht AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben