【问题标题】:I want to Enlarge my JButton Image when my mouse hovers over it当我的鼠标悬停在它上面时,我想放大我的 JButton 图像
【发布时间】:2015-07-09 15:45:50
【问题描述】:

我这辈子都想不通。我想要发生的是当我的鼠标悬停在菜单中的“开始”JButton 上以将其放大 50-100 像素。有什么方法可以在这里使用我的代码? 提前致谢! “我正在使用 java eclipse btw”不知道这是否有帮助

//START_Button
    JButton button = new JButton("Start");
    frame.pack();
    JTextPane TEXT = new JTextPane();
    BufferedImage buttonIcon;
    try {
        buttonIcon = ImageIO.read(new File("C:\\Users\\GOULDEN\\Desktop\\MENU_START.png"));
        button = new JButton(new ImageIcon(buttonIcon));
        button.setBorder(BorderFactory.createEmptyBorder());
        button.setContentAreaFilled(false);
        Container contentPane = frame.getContentPane();
        contentPane.add(button);
        button.setBounds(500,250,300,75);

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
}

【问题讨论】:

    标签: java eclipse image button jbutton


    【解决方案1】:

    实现MouseListener 并使用mouseEntered()mouseExited() 使您的按钮更大。

    将要在其他方法中访问的变量声明为instance variables,以便能够访问它们。

    import java.awt.Cursor;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    
    import javax.swing.BorderFactory;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    
    public class Demo extends JFrame implements MouseListener {
    
        private static final long serialVersionUID = 1L;    
        private JButton startButton;
    
    
        public Demo() {
    
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setBounds(100, 100, 500, 500);
            this.setLayout(null);        
    
            startButton = new JButton("Start");                                   
            startButton= new JButton(new ImageIcon("path/to/image.jpg"));
            startButton.setBorder(BorderFactory.createEmptyBorder());
            startButton.setContentAreaFilled(false);
            startButton.setBounds(1, 2, 100, 25);
            startButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
            startButton.addMouseListener(this);
    
            this.add(startButton);
            this.setVisible(true);
        }
    
        public static void main(String[] args) {
             new Demo();
        }
    
        @Override
        public void mouseClicked(MouseEvent e) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void mousePressed(MouseEvent e) {
            // TODO Auto-generated method stub
    
    
        }
    
        @Override
        public void mouseReleased(MouseEvent e) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void mouseEntered(MouseEvent e) {
            startButton.setSize(400, 125);
            this.repaint();
        }
    
        @Override
        public void mouseExited(MouseEvent e) {
            startButton.setSize(100, 25);
            this.repaint();
        }              
        }
    

    顺便说一句,如果您不打算使用图像属性,则确实不需要使用bufferedImage,因此只需将图像位置直接插入ImageIcon,这样您就可以删除try-catch

    new JButton(new ImageIcon("path/to/image.jpg"));
    

    查看这些链接以详细了解您的示例中使用的主题。

    1. Variable Scopes
    2. MouseListener implementation
    3. Working With Images

    【讨论】:

    • 我添加了 MouseEntered 并将 button.setSize(400,125);但它说按钮无法解析,我认为这是因为它无法访问 JButton“按钮”,但我不知道如何让 Public void mouseEntered 可以访问它。抱歉,如果这是一个简单的修复,我对代码很陌生
    猜你喜欢
    • 2014-01-31
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    相关资源
    最近更新 更多