Я создал веб-искатель, а затем графический интерфейс для пользователей для поиска по базе данных и т. Д. Я хотел бы, чтобы JXTable теперь можно было щелкнуть, чтобы перейти к URL-адресу. Вот мой код JXTable:Создание интерактивного JXTable или JTable
outPut = new JXTable(tableModel);
add(new JScrollPane(outPut), BorderLayout.CENTER);
outPut.setEditable(false);
AbstractHyperlinkAction<Object> simpleAction = new AbstractHyperlinkAction<Object>(null) {
@Override
public void actionPerformed(ActionEvent e) {
//No idea what goes here
}
};
Я получил его, чтобы отобразить из базы данных, как показано ниже, но понятия не имеют, как сделать клетки кликабельны.
Просто показывает вывод результатов поиска
Это, как предполагается, слушатель мыши для таблицы. Не работает вообще печально. Я также установил для редактирования таблицы значение false. Я не уверен, куда идти по этой причине. Я не уверен, правильно ли я изучаю исследование или нет.
private static boolean isURLColumn(JTable outPut, int column) {
return column>=0 && outPut.getColumnClass(column).equals(URL.class);
}
public void mouseClicked(MouseEvent e) {
outPut = (JTable)e.getSource();
Point pt = e.getPoint();
int ccol = outPut.columnAtPoint(pt);
if(isURLColumn(outPut, ccol)) {
int crow = outPut.rowAtPoint(pt);
URL url = (URL)outPut.getValueAt(crow, ccol);
try {
if(Desktop.isDesktopSupported()) {
Desktop.getDesktop().browse(url.toURI());
}
}
catch(Exception ex) {
ex.printStackTrace();
}
}
}
Это код, который заполнит JTable, используя модель таблицы по умолчанию:
ResultSetMetaData metaData = rS.getMetaData();
// Names of columns
Vector<String> columnNames = new Vector<>();
int columnCount = metaData.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
columnNames.add(metaData.getColumnName(i));
}
// Data of the table
Vector<Vector<Object>> data = new Vector<>();
while (rS.next()) {
Vector<Object> vector = new Vector<>();
for (int i = 1; i <= columnCount; i++) {
vector.add(rS.getObject(i));
}
data.add(vector);
}
tableModel.setDataVector(data, columnNames);
tableModel.setRowCount(maxRow);
Это не «SSCCE». Я не могу скомпилировать код, так как он не является полным. У меня нет доступа к вашей базе данных. Создайте простой JFrame с помощью простого JTable. Hardcode URL-адрес в одну или две ячейки таблицы. Добавьте MouseListener в таблицу и щелкните по ячейке, содержащей URL-адрес. Точка SSCCE заключается в том, чтобы упростить проблему до ее основ. – camickr
Хорошо, не проблема .... – Relentless