有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (1) 个答案

  1. # 1 楼答案

    代码与示例相同,但在这里

    TestJLayerZoom。爪哇

    import java.awt.Dimension;
    import java.awt.EventQueue;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLayer;
    import javax.swing.JPanel;
    import javax.swing.WindowConstants;
    
    
    
    
    public class TestJLayerZoom {
    
        public static void main(String args[]) {
            EventQueue.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    JFrame frame = new JFrame();
                    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    
                    JPanel panel = new JPanel();
                    ZoomUI layerUI = new ZoomUI();
                    JLayer<JComponent> jLayer = new JLayer<JComponent>(panel, layerUI);
    
                    JButton zoomIn = new JButton("Zoom In");
                    zoomIn.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            layerUI.zoom += 0.1;
    
                            jLayer.revalidate();
                            jLayer.repaint();
                        }
                    });
                    panel.add(zoomIn);
    
                    JButton zoomOut = new JButton("Zoom Out");
                    zoomOut.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            layerUI.zoom -= 0.1;
                            jLayer.revalidate();
                            jLayer.repaint();
                        }
                    });
                    panel.add(zoomOut);
    
                    frame.setPreferredSize(new Dimension(400, 200));
                    frame.add(jLayer);
                    frame.pack();
                    frame.setVisible(true);
                }
            });
        }
    
    
    }
    

    梅祖伊。爪哇

    import java.awt.AWTEvent;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import javax.swing.JComponent;
    import javax.swing.JLayer;
    import javax.swing.plaf.LayerUI;
    
    
    public class ZoomUI extends LayerUI<JComponent> {
    
            public double zoom = 1; // Changing this value seems to have no effect
    
            @Override
            public void paint(Graphics g, JComponent c) {
                Graphics2D g2 = (Graphics2D) g.create();
                g2.scale(zoom, zoom);
                super.paint(g2, c);
                g2.dispose();
            }
    
            @Override
            public void installUI(JComponent c) {
                super.installUI(c);
                JLayer jlayer = (JLayer) c;
                jlayer.setLayerEventMask(
                        AWTEvent.MOUSE_EVENT_MASK | AWTEvent.ACTION_EVENT_MASK
                        | AWTEvent.MOUSE_MOTION_EVENT_MASK
                );
            }
    
            @Override
            public void uninstallUI(JComponent c) {
                JLayer jlayer = (JLayer) c;
                jlayer.setLayerEventMask(0);
                super.uninstallUI(c);
            }
        }
    

    In the image I explain the problem