-
Notifications
You must be signed in to change notification settings - Fork 156
/
MainPanel.java
74 lines (65 loc) · 2.56 KB
/
MainPanel.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// -*- mode:java; encoding:utf-8 -*-
// vim:set fileencoding=utf-8:
// @homepage@
package example;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.im.InputContext;
import javax.swing.*;
public final class MainPanel extends JPanel {
private MainPanel() {
super(new BorderLayout());
JCheckBox check = new JCheckBox("一時ウィンドウ(入力モード)->enterでセル編集開始", true);
JTable table = new JTable(4, 3) {
@Override protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) {
if (check.isSelected() && !isTabOrEnterKey(ks.getKeyCode())) {
startEditing(ks, pressed);
}
return super.processKeyBinding(ks, e, condition, pressed);
}
private void startEditing(KeyStroke ks, boolean pressed) {
InputContext ic = getInputContext();
boolean isCompEnabled = ic != null && ic.isCompositionEnabled();
if (isCompEnabled && !isEditing() && !pressed && !ks.isOnKeyRelease()) {
int selectedRow = getSelectedRow();
int selectedColumn = getSelectedColumn();
if (selectedRow != -1 && selectedColumn != -1) {
editCellAt(selectedRow, selectedColumn);
// boolean b = editCellAt(selectedRow, selectedColumn);
// System.out.println("editCellAt: " + b);
}
}
}
private boolean isTabOrEnterKey(int keyCode) {
return keyCode == KeyEvent.VK_TAB || keyCode == KeyEvent.VK_ENTER;
}
};
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
// table.setSurrendersFocusOnKeystroke(true);
// table.setShowGrid(false);
// table.setShowHorizontalLines(false);
// table.setShowVerticalLines(false);
add(check, BorderLayout.NORTH);
add(new JScrollPane(table));
setPreferredSize(new Dimension(320, 240));
}
public static void main(String[] args) {
EventQueue.invokeLater(MainPanel::createAndShowGui);
}
private static void createAndShowGui() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (UnsupportedLookAndFeelException ignored) {
Toolkit.getDefaultToolkit().beep();
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
ex.printStackTrace();
return;
}
JFrame frame = new JFrame("@title@");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.getContentPane().add(new MainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}