代码之家  ›  专栏  ›  技术社区  ›  Pahansith Gunathilake

如何为JButton[duplicate]编写鼠标移动事件

  •  0
  • Pahansith Gunathilake  · 技术社区  · 8 年前

    我尝试了下面的程序来测试java鼠标适配器类的鼠标移动方法,但它不起作用。当我在鼠标悬停按钮上移动鼠标时,我想将进度条的值从2增加到2。我怎样才能解决这个问题?

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    class ProgressDemo extends JFrame{
        private JProgressBar progress;
        private JButton mouseButton;
        static int x = 2;
        ProgressDemo(){
            progress = new JProgressBar(JProgressBar.HORIZONTAL,0,100);
            progress.setBounds(50,100,500,15);
            progress.setStringPainted(true);
            mouseButton = new JButton("Mouse Over");
            mouseButton.addMouseListener(new MouseAdapter(){
                public void mouseMoved(MouseEvent evt){
                    progress.setValue(x+=2);
                }
            });
    
    
            JPanel mousePanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
            mousePanel.setBounds(0,10,600,50);
            mousePanel.add(mouseButton);
    
            setSize(600,200);
            setLayout(null);
            add(mousePanel);
            add(progress);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setLocationRelativeTo(null);
        }
    }
    
    class JProgress{
        public static void main(String args[]){
            ProgressDemo p1 = new ProgressDemo();
            p1.setVisible(true);
        }
    }
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   Beniton Fernando    8 年前

    按如下所示修改代码。希望它能帮助你进步。

    mouseButton.addMouseMotionListener(new MouseMotionListener() {
    
         @Override
         public void mouseDragged(MouseEvent e) {
         }
    
         @Override
         public void mouseMoved(MouseEvent e) {
             progress.setValue(x += 2);
         }
    });