java - 复制选定 JTable 单元格的单元格值而不是行

标签 java swing jtable keystroke

我试图在 Jtable 的实际单元格而不是整行上启用 ctrl c。我知道如何禁用整行的 ctrl c 。

KeyStroke cStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK);
inputMap.put(cStroke,  "none");

我尝试了以下方法来向单元格本身添加 ctrl c:向表本身添加一个按键监听器。它不起作用。以及以下代码:

Action actionListener = new AbstractAction() {
    public void actionPerformed(ActionEvent actionEvent) {
        System.out.println("activated");
    }
};
KeyStroke cStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK);
inputMap.put(cStroke,  actionListener);

它没有打印激活。

我已阅读JTable: override CTRL+C behaviour但它不包含答案,至少没有具体答案..

最佳答案

您可以将选定单元格的内容复制到剪贴板,如下所示:

import javax.swing.*;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;

public class CopyCell
{
  public static void main(String[] args)
  {
    JTable table = new JTable(
        new String[][] {{"R1C1", "R1C2"}, {"R2C1", "R2C2"}},
        new String[] {"Column 1", "Column 2"});

    table.getActionMap().put("copy", new AbstractAction()
    {
      @Override
      public void actionPerformed(ActionEvent e)
      {
        String cellValue = table.getModel().getValueAt(table.getSelectedRow(), table.getSelectedColumn()).toString();
        StringSelection stringSelection = new StringSelection(cellValue);
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, stringSelection);
      }
    });

    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.getContentPane().add(new JScrollPane(table));
    f.setBounds(300, 200, 400, 300);
    f.setVisible(true);
  }
}

关于java - 复制选定 JTable 单元格的单元格值而不是行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54155464/

相关文章:

java - 在 JTable 中选择行时索引错误

Java Swing,尝试用图像图标复选框替换 JTable 中的 boolean 复选框

java - 如何制作(keyPressed)KeyListener?

java - 我如何使变量获取行数据

java - 当我点击同一个 url 超过 4 次时,Dao 类没有得到任何响应

Java使用grouplayout对齐3个面板

java - 如何在 Java 中向下移动表格?

java - 使用 OpenGL 进行 FPS 相机旋转

java.lang.UnsatisfiedLinkError 错误

java - spring mvc jquery ajax响应作为json编码问题