Tenho um problema aqui, que preciso criar um tipo de JLabel que dispare um ActionListener quando for clicado. Ou seja, algo que é apresentado como um label, mas se comporta como um botão.
Tentei implementar isso de várias formas diferentes e nenhuma delas deu certo. Alguém aí tem um código legal que faça isso?
Você queria uma coisa como se fosse um link html? Acho que você pode usar um JButton e remover a borda dele, por exemplo.
B
BrunoCarlo
victorwss:
Oi pessoal.
Tenho um problema aqui, que preciso criar um tipo de JLabel que dispare um ActionListener quando for clicado. Ou seja, algo que é apresentado como um label, mas se comporta como um botão.
Tentei implementar isso de várias formas diferentes e nenhuma delas deu certo. Alguém aí tem um código legal que faça isso?
Ha, só complementando, se vc quizer dar uma melhorada… vc pode aproveitar o MouseListener e tratar no evento de mouseEntered e mouseExited para quando o mouse passar por cima trocar a cor do foreground para azul… e quando o mouse sair dele coloca preto… dae fica com o efeito de link… saca?
M
Matchola1 like
Juntando oq td mundo falo seria +ou- assim:
importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassexemploextendsJFrameimplementsMouseListener{staticfinalJLabellink=newJLabel("www.guj.com.br");//seu labelpublicexemplo(){link.addMouseListener(this);//esta adicionando os eventos do mouse ao labelsetLayout(newFlowLayout());add(link);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});setLocation(700,500);setSize(200,70);setVisible(true);}publicvoidmouseClicked(MouseEventarg0){link.setText("Você clicou no label");}// evento q sera executado caso o mouse click no labelpublicvoidmouseEntered(MouseEventarg0){link.setForeground(Color.blue);}// evento q sera executado caso o mouse entre no labelpublicvoidmouseExited(MouseEventarg0){link.setText("www.guj.com.br");link.setForeground(Color.black);}// evento q sera executado caso o mouse saia do labelpublicvoidmousePressed(MouseEventarg0){link.setText("Você esta pressionando no label");}// evento q sera executado caso o mouse seja pressionado no labelpublicvoidmouseReleased(MouseEventarg0){link.setText("Você largou no label");}// evento q sera executado caso o mouse seja largado no labelpublicstaticvoidmain(String[]args){newexemplo();}}
espero ter ajudado :wink:
V
victorwss
Achei este tópico no javarach e conseguir resolver. A solução é a classe javax.swing.JEditorPane. Nem sabia que ela existia, mas é uma classe bem interessante.