Ich habe ein Problem mit dem Cursor in JTable
. Ich habe versucht, eine Antwort im Forum zu finden, kann aber nicht die Antwort finden, die ich erwartet habe. Hier ist meine runnable Java:Cursor blinkt automatisch in Jtable ohne Mausklick
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
import javax.swing.table.AbstractTableModel;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.JTable;
public class Fpos extends JFrame {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Fpos frame = new Fpos();
frame.setVisible(true);
frame.setLocationRelativeTo(null); //make frame center of screen
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Fpos() {
//create Jpanel
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(10, 10, 1300, 700);
JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
//create label TOTAL
JLabel lblTotal = new JLabel("TOTAL : Rp.");
lblTotal.setFont(new Font("Wide Latin", Font.PLAIN, 30));
lblTotal.setBounds(33, 25, 312, 31);
contentPane.add(lblTotal);
//create label Total Amount
JLabel lblNewLabel = new JLabel("123,456,789");
lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
lblNewLabel.setFont(new Font("Wide Latin", Font.PLAIN, 60));
lblNewLabel.setBounds(571, 6, 659, 61);
contentPane.add(lblNewLabel);
//create jtable in scrollpane
JTable table = new JTable(new MyTableModel());
JScrollPane sp=new JScrollPane(table);
sp.setBounds(20,76,1240,572);
contentPane.add(sp);
}
//tablemodel
class MyTableModel extends AbstractTableModel {
private String[] columnNames = {"PLU", "NAME", "UOM", "QTY", "PRICE","AMOUNT"};
private Object[][] data = {{"", "", "", new Double(0), new Integer(0), new Integer(0)}};
public int getColumnCount() {return columnNames.length;}
public int getRowCount() {return data.length;}
// public String getColumnName(int col) {return columnNames[col];}
public Object getValueAt(int row, int col) {return data[row][col];}
//auto formating table: string=left alignment, numeric=right alignment, checkbox=check box not true/false
public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
//make table editable only for just first column
public boolean isCellEditable(int row, int col) {if (col == 0) {return true;} else{return false;}}
//make table can change value
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
}
}
Der Ausgang ist nur gut, aber der Tisch ist nicht eingabebereit zu sein. Ich muss auf Spalte PLU erste Zeile doppelklicken, um für die Eingabe bereit zu sein. Was ich will ist, sobald ich es ausführen, Cursor blinkt in Spalte PLU erste Zeile, bereit für die Eingabe ohne Doppelklick.
Irgendwelche Vorschläge, wie man das erreicht?
Werfen Sie einen Blick auf [ 'JTable # editCellAt'] (https://docs.oracle.com/javase/8/docs/api/javax/swing/JTable.html# editCellAt-int-int-) – MadProgrammer
Dank MadProgrammer, ich habe die Lösung gefunden. Ich habe eine neue Frage hier https://stackoverflow.com/questions/47447780/key-binding-in-jtable-editor geschrieben. seine Tastaturbindung ist an den Tabelleneditor und nicht an die Tabelle gebunden. Hoffe, du kannst auch helfen. – Hendra