簡體   English   中英

鼠標滑過JLabel時不顯示文本

[英]Text not displayed when mouse is rolled over JLabel

使用NetBeans(Java),我在JLabel中遇到問題。 我已將圖像分配為該JLabel的圖標。

問題-第一:

我想在該圖標(圖像)下方顯示一些文本(例如-注銷)。 這個怎么做?

問題-第二:

當鼠標懸停在該JLabel上時,我想顯示一些文本。 我該怎么辦?

因此,請大家通過編寫代碼告訴我如何進行這些操作。

我建議閱讀基本的Oracle教程,這些教程詳細描述了如何完成此操作。 您可以使用MouseMotionListener來確定何時將鼠標滑過JLabel,並且可以按照JLabel教程中的說明設置其垂直文本位置,從而將JLabel文本放置在JLabel圖標的下方。 這應該是通過對問題的簡單互聯網搜索就可以找到的,在提出問題之前,您的問題所暗示的事情並未完成(並且應該已經完成​​)

1。

創建一個包含兩個JLabelJPanel 這樣,您可以控制內部組件的布局。

我使用BoxLayout和參數BoxLayout.Y_AXIS來獲取圖標下方的標簽。

2。

使用方法component.addMouseListener(new MouseAdapter() { ... });添加一個MouseListener component.addMouseListener(new MouseAdapter() { ... }); ,則需要創建一個MouseAdapter並實現所需的任何方法(單擊此處)

這是為您的伙伴提供的一個有效示例。

注意:您需要更改ImageIcon()file-path

public static void main(String[] args) {

    JFrame frame = new JFrame();
    JPanel container = new JPanel();
    JPanel iconLabelPanel = new JPanel();

    String TEXT_FIELD_TEXT = "Hover over the logout label.";

    JLabel icon = new JLabel(new ImageIcon("C:\\Users\\Gary\\Google Drive\\Pictures\\puush\\ss (2015-02-19 at 06.00.00).png"));
    JLabel label = new JLabel("Logout!");
    JTextField textField = new JTextField(TEXT_FIELD_TEXT);

    //Add a mouse motion listener for the JLabel
    label.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseEntered(MouseEvent e) {
            //Set text of another component
            textField.setText("You're over Logout!");
        }

        @Override
        public void mouseExited(MouseEvent e) {
            //Set text of another component
            textField.setText(TEXT_FIELD_TEXT);
        }
    });


    //Add components and set parameters for iconLabelPanel
    iconLabelPanel.setLayout(new BoxLayout(iconLabelPanel, BoxLayout.PAGE_AXIS));
    iconLabelPanel.add(icon);
    iconLabelPanel.add(label);

    //Add components and set parameters for container
    container.setLayout(new BoxLayout(container, BoxLayout.PAGE_AXIS));
    container.add(iconLabelPanel);
    container.add(textField);

    //Set parameters for frame
    frame.add(container);
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.setSize(400, 400);
    frame.setVisible(true);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM