問題是,我必須用滑鼠點擊單元格,使文本游標可見(在單元格被聚焦后)。即使文本游標不可見,我仍然可以編輯該單元格。當我試圖通過鍵盤鍵(如Tab或Arrow)來聚焦單元格時,在編輯時就不可能出現文本游標了。
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class TableTest extends JFrame {
private JTable table;
private DefaultTableModel tableModel;
public TableTest() {
setSize(500, 500) 。
setResizable(false)。
setLocationRelativeTo(null)。
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)。
final String[] head = {"ID", "NAME"};
tableModel = new DefaultTableModel(null, head);
table = new JTable(tableModel)。
tableModel.addRow(new Object[] {"1", "Cristiano Ronaldo"}) 。
tableModel.addRow(new Object[] {"2", "Lionel Messi"}) 。
add(table);
}
}
我希望在編輯時文本游標是可見的,而不需要手動點擊單元格。
uj5u.com熱心網友回復:
你可以用這樣的代碼來覆寫JTable:
JTable table = new JTable(data, 列名)
{
//選擇單元格開始編輯時的文本。
//a) 當你開始在單元格中輸入時,文本將被替換。
//b) 當你使用F2開始編輯時,文本將被選中。
//c) 雙擊開始編輯時,文本將被選中。
public boolean editCellAt(int row, int column, EventObject e)。
{
boolean result = super.editCellAt(row, column, e)。
final Component editor = getEditorComponent()。
if (editor != null && editor instanceof JTextComponent)
{
//((JTextComponent)editor).selectAll();
editor.requestFocusInWindow()。
if (e == null)
{
//((JTextComponent)editor).selectAll();
editor.requestFocusInWindow()。
}
else if (e instanceof MouseEvent)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
//((JTextComponent)editor).selectAll();
editor.requestFocusInWindow()。
}
});
}
}
return result;
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/310268.html
標籤:
上一篇:利用三角法用java畫三角形
