「已注销」 2018-12-05 15:03 采纳率: 0%
浏览 358

Java 在监听器中为GlassPane 添加组件,不刷新

Java 在监听器中添加了组件后, 只有当鼠标碰到组件时才会显示.

图片说明图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 09:41
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在 Java 中,我们可以使用 Swing 的 glassPane 类来创建一个玻璃效果的面板。然后,在 Mouse 类中实现 MouseListener 接口,并重写 mouseClicked 方法以处理鼠标点击事件。以下是一个简单的示例:

    import javax.swing.*;
    import java.awt.*;
    
    /**
     * 创建一个具有玻璃效果的面板。
     */
    public class GlassPaneExample {
    
        private static final String TEXT = "Hello World";
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("Glass Pane Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            // 创建一个玻璃效果的面板
            JPanel glassPanePanel = createGlassPane();
            glassPanePanel.setSize(200, 200);
            glassPanePanel.setLocation(100, 100);
            frame.add(glassPanePanel);
    
            // 创建按钮
            JButton button = new JButton(TEXT);
            button.setSize(100, 100);
            button.setLocation(50, 50);
            glassPanePanel.add(button);
    
            // 设置玻璃效果
            frame.pack();
            frame.setVisible(true);
        }
    
        /**
         * 创建一个具有玻璃效果的面板。
         *
         * @return 玻璃效果的面板
         */
        private static JPanel createGlassPane() {
            // 创建一个玻璃效果的面板
            JPanel glassPane = new JPanel(new BorderLayout());
            glassPane.setBackground(Color.WHITE);
    
            // 创建一个按钮
            JButton button = new JButton(TEXT);
            button.setBorderPainted(false);
            glassPane.add(button, BorderLayout.CENTER);
    
            // 设置玻璃效果
            glassPane.add(getGlassPaneBorder(), BorderLayout.SOUTH);
    
            return glassPane;
        }
    
        /**
         * 创建一个包含玻璃效果的边框。
         *
         * @return 玻璃效果的边框
         */
        private static Border getGlassPaneBorder() {
            return BorderFactory.createEmptyBorder(10, 10, 10, 10);
        }
    }
    

    在这个例子中,我们首先创建了一个具有玻璃效果的面板,并在其内部添加了一个按钮。然后,我们通过设置玻璃效果的边框来使按钮透明。当用户点击按钮时,框架会重新计算其大小和位置。

    注意:这个示例没有处理鼠标点击事件的回调。如果你希望在按钮被点击时更新玻璃效果,你需要将 button 添加到玻璃面板上,而不是直接将其作为按钮的一部分。你可以在 createGlassPane 方法中修改玻璃面板的布局,使其能够容纳你的按钮。

    评论

报告相同问题?