簡體   English   中英

鼠標光標移到角落時如何顯示條形圖?

[英]how to display a bar when mouse cursor is moved to a corner?

在Windows 8中,當用戶將鼠標光標向右移動時,將顯示帶有某些按鈕的控制欄。 那么,這可以在Java應用程序中完成嗎? 我希望當用戶將鼠標光標向左移動時,會彈出類似的帶有一些按鈕的控制欄。 這樣有可能嗎? 注意:我的Java應用程序適合屏幕(全屏應用程序)的寬度和高度。

您可以在要使用的幀的contentPane上使用MouseMotionListener 並在MouseMotionListener獲取鼠標位置,並與角點像素的值進行比較。

你可以做類似的事情

getContentPane().addMouseMotionListener(new MouseMotionAdapter(){

    @Override
    public void mouseMoved(MouseEvent e) {
        if(e.getX() == 0) //for left corner
            charmsPanel.setVisible(true);   
    }

});

這是一個基於@VamshiAlladi的答案的示例:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.PointerInfo;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Example extends JFrame {

    public Example() {

        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        int width = (int) screenSize.getWidth();
        int height = (int) screenSize.getHeight();

        JPanel glass = (JPanel) getGlassPane();
        glass.setLayout(new BorderLayout());

        JPanel bar = new JPanel();
        bar.setLayout(new GridLayout(10, 1));
        for (int i = 1; i <= 10; i++) {
            bar.add(new JButton("Button " + i));
        }

        addMouseMotionListener(new MouseMotionListener() {
            public void mouseMoved(MouseEvent e) {
                PointerInfo a = MouseInfo.getPointerInfo();
                Point b = a.getLocation();
                int x = (int) b.getX();
                int y = (int) b.getY();
                if (x > Example.this.getWidth() - 10) {
                    glass.setVisible(true);
                } else {
                    glass.setVisible(false);
                }
                revalidate();
                repaint();
            }

            public void mouseDragged(MouseEvent e) {
            }
        });

        setSize(width, height);
        glass.add(bar, BorderLayout.EAST);
        setVisible(true);

    }

    public static void main(String[] args) {
        new Example();
    }

}

編輯:

為什么要使用GlassPane而不是新的JPanel -如果您的ContentPane上有顯示條的區域中有組件,則玻璃窗格(例如)“覆蓋”內容窗格。 使用JPanel,您將不得不更換組件(這可能會導致問題)。

暫無
暫無

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

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