Mac OS X 上的 JTable 多项选择

JTable multiple selection on Mac OS X

我有一个 Swing 应用程序,我们遇到了一些 Mac 用户和 JTable 组件的问题。

表格设置了 select离子模式:

setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

在 Windows 上使用此 selected 您可以:

  1. select一行
  2. select 按住鼠标并拖动连续行
  3. select 连续行,方法是单击第一行到 select,按住 Shift 键并单击最后一行到 select
  4. Select 多组连续行,方法是单击一行并拖动,然后按住 ctrl 并从不同的行再次执行此操作
  5. 您可以按住 Ctrl 并单独 select 行不连续

在 Mac OS 你只能做 1 和 2。 我不关心 3 和 4,但我真的需要它们能够 select 不连续的随机行。

这是 #5 中描述的 selection 行为的图片,它不适用于 Mac:

我使用标准 JTable 简单演示在 windows 上生成了这个。你不能在 Mac 上这样做。你可以 linux。这是该演示的 link: docs.oracle.com/javase/tutorial/uiswing/components/table.html

这是已知问题还是已知解决方案?

Windows Ctrl 键在功能上更接近 Mac 的 Command 键,而不是 Control 键,尽管 Java 识别 Win 的 Ctrl 键和 Mac' s 控制键具有相同的 KeyEvent#getKeyCode() 值 17。

选择 non-contiguous 行对我有用,方法是按住 Command 键,而不是 Control。在带有 M1 芯片 运行 MacOS Monterey 12.0.1 的 MacBook Air 上测试,使用 Azul Zulu 的 OpenJDK 版本 17.0.2 构建。