Focus in JTable Cell

amandina

Mitglied
Hallo,

Ich habe ein JTable wo der Benutzer normalerweise nur in eine Spalte editieren kann. Wenn die Eingabelänge=9, dann wird die Information bearbeitet und in die Zeile gespeichert und gleichzeitig eine neue Zeile erstellt, wo der Focus sich immer noch in der erste Spalte befindet. Wenn die Eingabe falsch ist, sollte eine Fehlermeldung für den Benutzer geben, Eingabe gelöscht und der Focus immer in derselbe Zelle bleiben. Bei mir aber springt der Focus in der nächste Zelle. Wieso??

[Java]

import java.awt.*;

import java.util.Vector;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;

public class Test implements TableModelListener{
DefaultTableModel model;
JTable table;
final int LIMIT=9;


public Test(){
createTable();

JPanel leftPanel = new JPanel(new BorderLayout(6, 6));
leftPanel.add(new JScrollPane(table), BorderLayout.CENTER);
JPanel centerPanel = new JPanel(new GridLayout(1, 2, 6, 6));
centerPanel.add(leftPanel);
JPanel contentPane = new JPanel(new BorderLayout(6, 6));
contentPane.add(centerPanel, BorderLayout.CENTER);
JFrame f = new JFrame("Test Frame");
f.setContentPane(contentPane);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);

}

public static void main(String[] args) {
new Test();

}

private void createTable() {
table=new JTable();
model = new DefaultTableModel() {
@Override

public boolean isCellEditable(int row, int col) {

if(col==1 ){
return true;
}else{
return false;
}

}


};
model.addColumn("A");
model.addColumn("B");
model.addColumn("C");
model.addColumn("D");
model.addColumn("E");
model.addColumn("F");
model.addTableModelListener(this);
table.setModel(model);
table.setCellSelectionEnabled(true);
table.setColumnSelectionAllowed(true);
table.setRowSelectionAllowed(true);
addEmptyRow() ;

}

@Override
public void tableChanged(TableModelEvent e) {
if(e.getColumn()==1 && model.getRowCount()>0){
String line=(String)model.getValueAt(model.getRowCount()-1,1);

if(line.length()==LIMIT){

addDataToLastRow(line);
}
if(!line.isEmpty() && line.length()!=LIMIT){
JOptionPane.showMessageDialog(null, "Eingabe hat ein nicht erkennbaren Format,wird geloescht");
if (table.getCellEditor() != null) {
table.getCellEditor().cancelCellEditing();
}

loescheLastRow();
}

}

}

private void addDataToLastRow(String info) {

int lastRow =model.getRowCount()-1;
model.setValueAt(info, lastRow, 2);
model.setValueAt(info, lastRow, 3);
model.setValueAt(info, lastRow, 4);
model.setValueAt(info, lastRow, 5);
addEmptyRow();

}

private void loescheLastRow() {
model.removeRow(model.getRowCount() - 1);
addEmptyRow();


}



private void addEmptyRow() {

Vector temp=new Vector();
temp.add(model.getRowCount()+1);
temp.add("");
temp.add("");
temp.add("");
temp.add("");
temp.add("" );
model.addRow(temp);

focusEmptyRow();



}
void focusEmptyRow(){

int row = model.getRowCount()-1;
//System.out.println("row:"+row);
int col = 1;
// Set the cell in edit mode

boolean success = table.editCellAt(row, col);
//System.out.println("success:"+success);
if (success) {
// Select cell
boolean toggle = false;
boolean extend = false;
table.changeSelection(row, col, toggle, extend);
table.requestFocus();
}
}

}



[/Java]
 

nickname

Bekanntes Mitglied
hi,

versuch mal den focus, in
Java:
 JOptionPane.showMessageDialog(null, "Eingabe hat ein nicht erkennbaren Format,wird geloescht");
einzubringen.

Schreib eine eigene Methode dafür, z.B
Java:
public void getInformationMessage(String information)
{
JOptionPane.showMessageDialog(null, information);
table.requestFocus();
}

gruß nickname
 

amandina

Mitglied
Hi,

Das Problem ist, dass die Tabelleden Focus hat, aber nicht in der gewünschten Zelle. Anyway, vielen Dank für deine Antwort, auch wenn keine Lösung ist.
 

amandina

Mitglied
Ich habe die Lösung gefunden, nach JTable Initialisierung muss man

[Java]
table.setSurrendersFocusOnKeystroke(true);
[/Java]

und auch

[Java]
@Override
public void tableChanged(TableModelEvent e) {
if(e.getColumn()==1 && model.getRowCount()>0){
String line=(String)model.getValueAt(model.getRowCount()-1,1);

if(line.length()==LIMIT){

addDataToLastRow(line);
}
if(!line.isEmpty() && line.length()!=LIMIT){
JOptionPane.showMessageDialog(null, "Eingabe hat ein nicht erkennbaren Format,wird geloescht");
if (table.getCellEditor() != null) {
table.getCellEditor().cancelCellEditing();
}

loescheLastRow();
table.setColumnSelectionInterval(1, 1);
table.setRowSelectionInterval(e.getFirstRow(),e.getFirstRow() );

}

}

}

[/Java]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JTable Focus Handling AWT, Swing, JavaFX & SWT 2
B JTable getselectedrow liefert -1 wenn Focus verloren AWT, Swing, JavaFX & SWT 4
G JTable und Focus AWT, Swing, JavaFX & SWT 30
B JTable - Focus - TabTaste AWT, Swing, JavaFX & SWT 2
D Focus in bestimmter Celle in JTable AWT, Swing, JavaFX & SWT 3
B Komponente in JTable bekommt keinen Focus AWT, Swing, JavaFX & SWT 3
D JTable: Focus auf Zelle markiert ihren Text zum editieren AWT, Swing, JavaFX & SWT 2
T JTable Focus auf Zelle setzen AWT, Swing, JavaFX & SWT 3
R Focus durch "tabben" von JTable Zelle auf andere K AWT, Swing, JavaFX & SWT 8
G JTable: Rahmen bei Focus um Zelle AWT, Swing, JavaFX & SWT 2
E Focus auf titledborder AWT, Swing, JavaFX & SWT 8
B JavaFX TextInputDialog: Focus auf Eingabefeldinhalt setzen und nach OK Inhalt leeren AWT, Swing, JavaFX & SWT 5
A JPanel austauschen und Focus geben AWT, Swing, JavaFX & SWT 3
xYurisha Gui Focus von JTextField weglenken AWT, Swing, JavaFX & SWT 6
O Focus zwischen Chat und Spiel wechselns AWT, Swing, JavaFX & SWT 3
T bekomme keinen Focus auf JTextField AWT, Swing, JavaFX & SWT 3
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
C JOptionPane.showConfirmDialog() -> Focus auf NEIN -> Enter gibt YES_OPTION zurück AWT, Swing, JavaFX & SWT 6
T SWT Button soll nur sichbar sein,wenn im Textfeld der Focus ist AWT, Swing, JavaFX & SWT 4
B Swing JTextfeld bekommt nur jedes Zweite mal Focus AWT, Swing, JavaFX & SWT 11
E JTextPane Focus AWT, Swing, JavaFX & SWT 1
D ComboBoxCellEditor Refresh beim Focus AWT, Swing, JavaFX & SWT 4
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
A Focus Problem AWT, Swing, JavaFX & SWT 4
I focus an ein jdialog geben AWT, Swing, JavaFX & SWT 3
B JInternalFrame Focus setzten geht nicht AWT, Swing, JavaFX & SWT 2
A Swing Focus auf gemalte Component AWT, Swing, JavaFX & SWT 5
H Swing JTextField in JWindow, JWindow bekommt focus zurück? AWT, Swing, JavaFX & SWT 9
M Swing Focus für Buttons deaktiviert --> keine Reaktion mehr auf Tastendrücke AWT, Swing, JavaFX & SWT 5
M focus subFrame AWT, Swing, JavaFX & SWT 3
G Force Focus für JButton AWT, Swing, JavaFX & SWT 2
lumo SWT Composite Focus AWT, Swing, JavaFX & SWT 2
T disabled Checkbox soll trotzdem Focus bekommen AWT, Swing, JavaFX & SWT 9
C Swing Focus Management AWT, Swing, JavaFX & SWT 3
lumo SWT Table Selection Color +Focus Out AWT, Swing, JavaFX & SWT 14
H Swing Focus bekommen AWT, Swing, JavaFX & SWT 4
D Swing keine Tabellen Zeilen ohne Focus AWT, Swing, JavaFX & SWT 7
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
L AWT Focus auf Fenster setzen AWT, Swing, JavaFX & SWT 4
H warum kann ich das focus event nicht abfangen ? AWT, Swing, JavaFX & SWT 5
L Swing Input Focus eines JTextFields in einer JList AWT, Swing, JavaFX & SWT 2
A Focus für JApplet AWT, Swing, JavaFX & SWT 7
R Focus ermitteln AWT, Swing, JavaFX & SWT 2
Nitram Swing Focus im JFrame AWT, Swing, JavaFX & SWT 10
I Swing Focus Listener bei PComboBox von pswing Erweiterung AWT, Swing, JavaFX & SWT 7
V Swing Problem mit Focus setzen AWT, Swing, JavaFX & SWT 7
thE_29 Swing JTabbedPane Focus von Komponenten außerhalb AWT, Swing, JavaFX & SWT 10
S Versuch den Focus zu klauen detektieren? AWT, Swing, JavaFX & SWT 14
SebSnake JFrame "Focus" erzwingen (wie JOptionPane) AWT, Swing, JavaFX & SWT 3
V JTabbedPane - keine "Focus"-Box auf selektiertem T AWT, Swing, JavaFX & SWT 2
L Focus für KeyListener auf verschiedene Panels AWT, Swing, JavaFX & SWT 2
O Focus im GBL steuern. AWT, Swing, JavaFX & SWT 3
K Focus an das JPanel übergeben AWT, Swing, JavaFX & SWT 2
K Focus-Problem AWT, Swing, JavaFX & SWT 9
O TextBoxen Focus über Pfeiltasten steuern AWT, Swing, JavaFX & SWT 3
G Problene mt Focus unter Swing AWT, Swing, JavaFX & SWT 7
D Beim Starten ein JTextfield Focus geben AWT, Swing, JavaFX & SWT 7
J JTextPane bekommt keinen Focus! AWT, Swing, JavaFX & SWT 3
P TextFeld Focus entfernen AWT, Swing, JavaFX & SWT 2
F Problem mit Actions, TextComponents und Focus AWT, Swing, JavaFX & SWT 2
K Focus mit Mouseclick auf JPanel setzen AWT, Swing, JavaFX & SWT 4
D Focus auf JPanel setzen AWT, Swing, JavaFX & SWT 2
M Focus beim öffnen eines neuen JFrames AWT, Swing, JavaFX & SWT 6
O JTextField- Selection / Focus bei nicht editierbaren Feldern AWT, Swing, JavaFX & SWT 2
J Focus auf JFrame AWT, Swing, JavaFX & SWT 3
B Focus für Textfeld AWT, Swing, JavaFX & SWT 5
B im JTree Focus setzen und navigieren AWT, Swing, JavaFX & SWT 3
B JInternalFrame in den Vordergrund rücken + Focus AWT, Swing, JavaFX & SWT 15
C Komponente mit Focus bevor JButton-Klick merken. AWT, Swing, JavaFX & SWT 6
L Focus setzen AWT, Swing, JavaFX & SWT 3
G JTabbedPane, Focus, ChangeListener AWT, Swing, JavaFX & SWT 1
B Focus in JOptionPane AWT, Swing, JavaFX & SWT 2
J Focus-Problem bei Vollbildmodus AWT, Swing, JavaFX & SWT 7
A Combobox Focus-Events, Tab in Tabelle AWT, Swing, JavaFX & SWT 7
F Fenster in den Vordergrund aber nicht im Focus AWT, Swing, JavaFX & SWT 21
O Abfrage ob eine bstimmte Komponente den Focus hat AWT, Swing, JavaFX & SWT 4
R Focus speeren AWT, Swing, JavaFX & SWT 2
K JList - merkwürdiges Verhalten bei Leertaste (unter Focus) AWT, Swing, JavaFX & SWT 7
W Components Focus mit TAB-Taste VERTIKAL bewegen AWT, Swing, JavaFX & SWT 4
V JTextField Focus Cursor setzen AWT, Swing, JavaFX & SWT 2
D jcolorchooser - lost focus AWT, Swing, JavaFX & SWT 2
R Focus auf bereits geöffnetes Fenster setzen AWT, Swing, JavaFX & SWT 9
O Welche Möglichkeit zum Focus setzen! AWT, Swing, JavaFX & SWT 2
R JMenu copy Focus-Problem AWT, Swing, JavaFX & SWT 2
M Focus einstellen AWT, Swing, JavaFX & SWT 3
G Focus so setzen, daß in einer jTextArea der Cursor blinkt AWT, Swing, JavaFX & SWT 7
thE_29 Modaler Dialog - close on not focus AWT, Swing, JavaFX & SWT 3
P Focus auf JFrame AWT, Swing, JavaFX & SWT 5
G JOptionPane verliert Focus AWT, Swing, JavaFX & SWT 3
A JTree Problem mit Focus bzw. Selection AWT, Swing, JavaFX & SWT 5
C Focus setzen AWT, Swing, JavaFX & SWT 2
G JTree Focus setzen AWT, Swing, JavaFX & SWT 2
F HILFE!!! Focus-Probleme bei unterschiedlichen Panel's AWT, Swing, JavaFX & SWT 3
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14

Ähnliche Java Themen

Neue Themen


Oben