JTable копирование выделенных ячеек в clipboard
Коллеги, прошу помочь с копированием выделенных ячеек в буфер обмена вместо CTRL+C - по правому щелчку мыши и выборе Copy. В настоящий момент я могу скопировать в буфер только одну ячейку, с которой начинал выделение. Вся область не копируется (с CTRL+C конечно копируется, но хочется понять как это сделать в Java).

Сейчас код выглядит так:
JMenuItem menuCopy = new JMenuItem("Copy");
menuCopy.addActionListener(e -> {
String cellValue = table.getModel().getValueAt(table.getSelectedRow(), table.getSelectedColumn()).toString();
StringSelection stringSelection = new StringSelection(cellValue);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, stringSelection);
});
popup.add(menuCopy);
Ответы (1 шт):
Автор решения: mrprogre
→ Ссылка
Это было нелегко:
JMenuItem menuCopy = new JMenuItem("Copy");
menuCopy.addActionListener(e -> {
Clipboard clipboard;
StringSelection stsel;
StringBuilder sbf = new StringBuilder();
final int numcols = table.getSelectedColumnCount();
final int numrows = table.getSelectedRowCount();
final int[] rowsselected = table.getSelectedRows();
final int[] colsselected = table.getSelectedColumns();
for (int i = 0; i < numrows; i++) {
for (int j = 0; j < numcols; j++) {
sbf.append(table.getValueAt(rowsselected[i], colsselected[j]));
if (j < numcols - 1) {
sbf.append('\t');
}
}
sbf.append('\n');
}
stsel = new StringSelection(sbf.toString());
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stsel, stsel);
});
popup.add(menuCopy);