有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JLabel中包含的超链接的java添加事件

我有一个jlabel显示内容,然后我在内容上添加一个超链接include。使用标签。我有一个问题,如何用户可以点击这个超链接,鼠标点击监听器的工作。 这是我的密码:

String languages="<html> Deutsch, English (All), English (United Kingdom), Bahasa Indonesia, Italiano <a href=\"\">  edit</a> </html>";
            GUIConstants.ELM_ALIGN_RIGHT), 240, 0));*/
    JLabel lblLanguage= new JLabel();
    lblLanguage.setFont((new Font("Arial", Font.PLAIN, 12)));
    lblLanguage.setText(languages);

如果用户单击编辑链接,弹出窗口将显示。否则,单击内容上的文本,它将不起作用。谢谢


共 (2) 个答案

  1. # 2 楼答案

    我认为这就是你想要实现的目标:

    import java.awt.BorderLayout;   
    import javax.swing.JEditorPane;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.event.HyperlinkEvent;
    import javax.swing.event.HyperlinkListener;
    
    public class HtmlMsg {
    
        public static void main(String[] args) {
    
            JFrame frame = new JFrame("Message with HTML link");
    
            String languages="<html> Deutsch, English (All), English (United Kingdom), "
                    + "Bahasa Indonesia, Italiano <a href=\"\">  edit</a> </html>";
    
            frame.getContentPane().add( panelWithHtmlListener(languages));
            frame.pack();
            frame.setVisible(true);
        }
    
        /**
         * 
         * @param msg
         *       to be displayed. Should contain HTML or html tag.
         *
         * @return
         *       Returns a panel with an HTML listener, displaying msg.
         */
        private static JPanel panelWithHtmlListener(String msg){
    
            JEditorPane jEditorPane = new JEditorPane("text/html", msg);
            jEditorPane.setEditable(false);
            jEditorPane.setOpaque(false);
    
            HyperlinkListener listener = new HyperlinkListener() {
                @Override
                public void hyperlinkUpdate(HyperlinkEvent hyperLink) {
    
                    if (HyperlinkEvent.EventType.ACTIVATED.
                                    equals(hyperLink.getEventType())) {
                        try {
                           //respond to html link clicked
                            JOptionPane.showMessageDialog(null, "HTML has been clicked !!" );
                        }
                        catch (Exception ex) { ex.printStackTrace();}
                    }
                }
    
            };
    
            jEditorPane.addHyperlinkListener(listener);
    
            JPanel jPanel = new JPanel();
            jPanel.setLayout(new BorderLayout(5, 5));
            jPanel.add(jEditorPane,  BorderLayout.CENTER);
    
            return jPanel;
        }   
    }