Com um só tu não consegue esse comportamento.
Por isso a dica de criar seu próprio componente que faça isso, veja o exemplo abaixo:
Uma classe para o evento que o componente vai disparar ao ser clicado:
public class LinkLabelEvent {
public final LinkLabel source;
public final String text;
protected LinkLabelEvent(LinkLabel source, String text) {
this.source = source;
this.text = text;
}
}
Uma interface para permitir tratar o evento:
public interface LinkLabelListener {
public void onClicked(LinkLabelEvent event);
}
O componente em si, você pode adequar como achar melhor:
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.LinkedList;
import java.util.List;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class LinkLabel extends JPanel {
private final List<LinkLabelListener> listeners = new LinkedList<>();
public LinkLabel(String text) {
BoxLayout layout = new BoxLayout(this, BoxLayout.Y_AXIS);
setLayout(layout);
String[] parts = text.split("\n");
int count = parts.length;
for (int i = 0; i < count; i++) {
JLabel label = new JLabel(parts[i]);
add(label);
label.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JLabel source = (JLabel) e.getSource();
onClicked(source.getText());
}
});
}
}
public void addLinkLabelListener(LinkLabelListener listener) {
listeners.add(listener);
}
public void removeLinkLabelListener(LinkLabelListener listener) {
listeners.remove(listener);
}
private void onClicked(String text) {
for (LinkLabelListener listener : listeners) {
listener.onClicked(new LinkLabelEvent(this, text));
}
}
}
E finalmente um exemplo de como utilizá-lo:
import java.awt.BorderLayout;
import javax.swing.JFrame;
public class Exemplo {
public static void main(String[] args) {
Exemplo programa = new Exemplo();
programa.executar();
}
private void executar() {
JFrame janela = new JFrame("Exemplo");
janela.setSize(640, 480);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// criando um objeto do componente personalidado
LinkLabel meuComponente = new LinkLabel("Link 1\nLink 2\nLink 3");
// adicionando um listener pra tratar o clique nele
meuComponente.addLinkLabelListener(event -> clicouEm(event.text));
// adicionando o componente na janela
janela.add(meuComponente, BorderLayout.CENTER);
janela.setVisible(true);
}
private void clicouEm(String text) {
System.out.println(text);
}
}