Разработвам приложение, използващо JTable
за управление на запасите.
Действието е, като въведете кода на елемента в a JTextField
и чрез натискане на клавиша enter, трябва да се появят подробности за този код JTable
, И там трябва да напиша количеството и да натисна enter, за да изчисли сумата.
Но сега, давайки код на елемента, подробностите идват на JTable
, и мога да напиша количеството, но там чрез натискане на клавиша Enter JTable
фокусът преминава към следващия ред и не се прави изчисление. Използвам MySQL и Java в Netbeans.
Намерих някакъв код. Този код сте посочили по-рано за този проблем
private void createKeybindings(JTable table) {
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Enter");
table.getActionMap().put("Enter", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
}
});
}
Но нямам ясна представа за този код.
- Моля, обяснете къде да добавите този код или има други кодове за това.
- Моля, кажете ми стъпка по стъпка, където поставя този код в Netbeans IDE (аз следвам тази връзка https://web.archive.org/web/20120626114430/http://java.sun.com/products/jfc/tsc/special_report/kestrel/keybindings.html, но не мога да го разбера).
Благодаря ти...
Отговори:
1 за отговор № 1Ако имате три колони като Количество, Цена, Сума, можете да замените setValueAt(...)
метод на таблицата с код като:
public void setValueAt(Object value, int row, int column)
{
super.setValueAt(value, row, column);
if (column == 0 || column == 1)
{
TableModel model = (TableModel)e.getSource();
int quantity = ((Integer)model.getValueAt(row, 0)).intValue();
double price = ((Double)model.getValueAt(row, 1)).doubleValue();
Double value = new Double(quantity * price);
model.setValueAt(value, row, 2);
}
}