Eai galera alguem sabe como faz para colocar um link em um campo de uma JTable…tipo se vc clica(tipo web) em um campo(no conteudo do campo), e ele abre um arquivo?
Vlw!!!
Eai galera alguem sabe como faz para colocar um link em um campo de uma JTable…tipo se vc clica(tipo web) em um campo(no conteudo do campo), e ele abre um arquivo?
Vlw!!!
Oi.
Já fizemos isso, mas não é trivial.
Depois disso, você adiciona a sua HyperlinkTable num JFrame. Adiciona um listener para HyperLink nesse frame. O evento te retornará qual o valor da célula clicada. E você também faz o seu model apontar o columnClass da coluna que tem o hiperlink como hyperlink column.
Bom, essa parafernalha toda segue em anexo. Boa sorte.
Mto bom, acabou m esclarecendo as idéias p outra funcionalidade.
vlwz.
abraços.
Parece ser mto interessante.
Já baixei, só nao olharei agora pq to tendo que estudar umas outras coisas, mas amanhã com certeza verei!
Obrigado de novo.
Abraços!
Olá,
Baixei o pacote “hyperlink” disponibilizado pelo Vini, mas não consegui utilizá-lo. Eu tento adicionar um listener via os comandos abaixo, mas não obtenho sucesso. Ainda sou inexperiente na linguagem.
Logo após adicionar o JFrame, o JPanel, o JScrollPane e o JTable com seu model, fiz o seguinte:
1ª tentativa:
HyperlinkTableListener listener = null;
linkTable.addTableHyperlinkListener(listener);
Na tentativa acima nada acontece com a coluna de hyperlinks na tabela. Talvez por causa do null…
2ª tentativa:
Na 2ª tentativa o erro é óbvio, já que o método hyperlinkClicked() da interface HyperlinkTableListener não foi implementado. Se esta é a maneira correta de adicionar um listener, então não sei como implementar este método.
Eu também não sei como fazer este trecho da explicação do Vini: “E você também faz o seu model apontar o columnClass da coluna…”.
É como um listener de botão. Ele vai ser chamado sempre que o Hiperlink for clicado.
Aí você pode fazer o que quiser com isso. Seja usar a classe Desktop para abrir o visualizador padrão do tipo de documento, ou então, abrir alguma tela específica da sua aplicação… enfim, fica a teu critério.
Você não deve mesmo passar null para o listener.
Certo. E como faço para indicar que determinada coluna é do tipo HyperlinkCell? Eu só sei obter a informação, com o getColumnClass();
Analisei melhor as classes e acredito que terei de implementar o código responsável por “abrir” o link, correto? No caso este código ficaria dentro do método hyperlinkClicked(). Porém, de qualquer forma, os links não estão aparecendo em fonte de cor azul e sublinhados.
Se alguém não entendeu minha dúvida mas puder dar um exemplo de como usar a HyperlinkTable, eu agradeço.
Abaixo segue o que tentei:
JFrame frame = new JFrame();
AnnotationResolver resolver = new AnnotationResolver(Pessoa.class);
ObjectTableModel<Pessoa> tableModel = new ObjectTableModel<Pessoa>(resolver, "nome,link");
linkTable = new HyperlinkTable(tableModel);
try {
tableModel.setData(consultaPessoa(consultaSQL(CONSULTA_PESSOA));
} catch(Exception ex) {
System.out.println(ex);
}
JScrollPane pane = new JScrollPane();
pane.setViewportView(linkTable);
JPanel panel = new JPanel();
panel.add(pane);
frame.add(panel);
frame.setVisible(true);
linkTable.addTableHyperlinkListener(new HyperlinkTableListener() {
public void hyperlinkClicked(HyperlinkTableEvent e){
if (Desktop.isDesktopSupported()) {
Desktop desktop = Desktop.getDesktop();
if (desktop.isSupported(Desktop.Action.BROWSE)) {
try {
URI uri = new URI("www.google.com.br");
desktop.browse(uri);
} catch(IOException | URISyntaxException ex) {
ex.printStackTrace();
}}}}});
ViniGodoy
Fiz exatamente como explicou não entendi bem foi esse trecho:
[code]if (e.getID() != MouseEvent.MOUSE_CLICKED
|| !isHyperlinkCell(e.getPoint())) {
super.processMouseEvent(e);
return;
}[/code]
Não consegui fazer o cursor aparecer em forma de mão.