gpt4 book ai didi

java - 在 jTable 上使用 Enter 键就像 Tab 键

转载 作者:行者123 更新时间:2023-11-29 10:13:55 25 4
gpt4 key购买 nike

我在我的项目中被困了 2 天,我无法实现如何使 ENTER KEYTAB KEY 一样我尝试了 key listener 但 ENTER KEY 具有 JTable 的默认功能,因此它不起作用,它一直向下移动。我 google它发现我需要使用键绑定(bind),但我无法实现它。

任何人都可以在 JTable 上给我一个完整的代码示例吗???请需要您的帮助。

提前致谢

最佳答案

基本的转变是使用键绑定(bind) API,在大多数情况下,它允许您覆盖许多组件上的默认行为键。

此示例基本上将相同命名的操作应用于 EnterTab 键,这使得通过使用单个 Action 修改它们的行为变得容易

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;

public class Test101 {

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

public Test101() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}

JTable table = new JTable();
InputMap im = table.getInputMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Action.NextCell");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0), "Action.NextCell");

ActionMap am = table.getActionMap();
am.put("Action.NextCell", new NextCellActioin(table));

DefaultTableModel model = new DefaultTableModel(10, 10);
table.setModel(model);

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new JScrollPane(table));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

public class NextCellActioin extends AbstractAction {

private JTable table;

public NextCellActioin(JTable table) {
this.table = table;
}

@Override
public void actionPerformed(ActionEvent e) {
int col = table.getSelectedColumn();
int row = table.getSelectedRow();

int colCount = table.getColumnCount();
int rowCount = table.getRowCount();

col++;
if (col >= colCount) {
col = 0;
row++;
}

if (row >= rowCount) {
row = 0;
}

table.getSelectionModel().setSelectionInterval(row, row);
table.getColumnModel().getSelectionModel().setSelectionInterval(col, col);
}

}

}

我记得 Tab 的功能是通过焦点管理器更改默认焦点行为来控制的

关于java - 在 jTable 上使用 Enter 键就像 Tab 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23648646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com