我的问题是我怎样才能使从JXTable列中的超链接(只为一个/特定列)的行动像我的默认桌面Web浏览器的“_blank”链接。
我用JXTable和一个DefaultTableModel,也是我从SQLite数据库调用数据。 我做互联网,谷歌,[...]的研究,我发现了很多它说,如果我不犯了一个错误信息:
- 注册的MouseListener到JXTable;
- 生成从点的MouseEvent对象;
- 获得通过getValueAt文本
***注:列有仅为1单元格链接,没有任何文字,只是链接。
现在我已经实现了这个代码,以使那里的细胞被双击的操作。 请有人能帮助我实现一个超链接列在其中开在默认浏览器像这个例子 (但我不知道如何去适应,因为数据不是从数据库调用)。
Table_Employee.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
JXTable target = (JXTable)e.getSource();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
JFrame newFrame = new JFrame(); //I want to open an distinc link
newFrame.setTitle("Detail Screen"); //for every cell along one column
newFrame.setVisible(true); //in the web browser, not a frame.
}
}
});
编辑从1的@Kleopatra编辑2的代码为我的应用程序的一些问题。 另外,我又尝试像代码波纹管,瞧 - 环节都存在时,首先点击参与,但没有反应(没有浏览器打开)。 @Kleopatra,你可以为我提供更多有关你的建议,因为当我试图把这些代码时,IDE不认hyperlinkColumn。
Table_Employee.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
JXTable target = (JXTable)e.getSource();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
AbstractHyperlinkAction<Object> simpleAction = new AbstractHyperlinkAction<Object>(null) {
public void actionPerformed(ActionEvent e) {
//open the browser event?
}
};
TableCellRenderer renderer = new DefaultTableRenderer(
new HyperlinkProvider(simpleAction));
Table_Employee.getColumnExt(2).setEditable(false);
Table_Employee.getColumnExt(2).setCellRenderer(renderer);
}
}
});