Java 如何使用mousewheellistener调整多个JPanel的大小?

Java 如何使用mousewheellistener调整多个JPanel的大小?,java,swing,listener,Java,Swing,Listener,我在Jlayeredpane中有三个JPanel,我将mousewheellistener添加到Jlayeredpane中。当我创建一个事件时,所有组件(包括三个JPanel和JPanel中的组件)都将调整大小(变大或变小),我尝试了很多方法,但我无法解决它,谁能给我举个例子?谢谢 //Jlayeredpane package test; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; i

我在Jlayeredpane中有三个JPanel,我将mousewheellistener添加到Jlayeredpane中。当我创建一个事件时,所有组件(包括三个JPanel和JPanel中的组件)都将调整大小(变大或变小),我尝试了很多方法,但我无法解决它,谁能给我举个例子?谢谢

//Jlayeredpane

package test;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.ActionListener;
import java.awt.event.MouseWheelEvent;
import java.awt.geom.Rectangle2D;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;

import test.MouseWheelListener;

public class MapView extends JPanel {
    private Dimension preferredSize = new Dimension(930, 600);
    private JLayeredPane jLayeredPane = new JLayeredPane();
    private JPanel bgPanel = new JPanel();//bgPanel
    private JPanel roomPanel = new JPanel();//roomPanel
    private JPanel infoPanel = new JPanel();//infoPanel
    private Rectangle2D[] rects = new Rectangle2D[50];
    private ImageIcon imageIcon;

    public MapView() throws IOException {

        File imageFile = new File("res"+File.separator+"OK1.jpg");
        final Image image = ImageIO.read(imageFile);
        imageIcon = new ImageIcon(image.getScaledInstance(
                getPreferredSize().width, getPreferredSize().height,
                Image.SCALE_FAST));
        final JLabel bg = new JLabel(imageIcon);
        final Point origin = new Point(0, 0);
        final Rectangle rectangle = new Rectangle(origin, getPreferredSize());
        bgPanel.setBounds(rectangle);
        bgPanel.add(bg);

        setPreferredSize(getPreferredSize());
        JButton jButton = new JButton("test");
        bgPanel.setOpaque(false);
        roomPanel.setOpaque(false);
        infoPanel.setOpaque(false);
        roomPanel.setBounds(rectangle);
        infoPanel.setBounds(rectangle);
        add(bgPanel, new Integer(1));
        add(roomPanel, new Integer(2));
        add(infoPanel, new Integer(3));


        for (int i = 0; i < rects.length; i++) {
            rects[i] = new Rectangle2D.Double(Math.random() * .8,
                    Math.random() * .8, Math.random() * .2, Math.random() * .2);
        }
        MouseWheelListener mouseWheelListener = new MouseWheelListener(this,
                getPreferredSize());
        addMouseWheelListener(mouseWheelListener);

    }

    public Dimension getPreferredSize() {
        return preferredSize;
    }

    private Rectangle2D r = new Rectangle2D.Float();

    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(Color.red);
        int w = getWidth();
        int h = getHeight();
        for (Rectangle2D rect : rects) {
            r.setRect(rect.getX() * w, rect.getY() * h, rect.getWidth() * w,
                    rect.getHeight() * h);
            ((Graphics2D) g).draw(r);
        }
    }

}
//测试框架

package test;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;

public class Test extends JFrame {
    private Container main = this.getContentPane();

    public Test() {

        this.setTitle("TEST");
        this.setSize((int) (960), (int) (680));
        this.setLocation(0, 0); 
        this.setResizable(false);
        this.setUndecorated(false);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }


    public void init() throws IOException {

        initContent();
        this.setVisible(true);
    }

    private void initContent() throws IOException {
        MapView mapPanel = new MapView();
        JScrollPane infoPanel = new JScrollPane(mapPanel);
        this.addKeyListener(new KeyListener(mapPanel));
        main.add(infoPanel, BorderLayout.CENTER);
    }
    public static void main(String[] args) throws IOException {

        Test window = new Test();
        window.init();
    }
}

请输入代码,否则您可能无法获得帮助:)谢谢您的提醒:),我现在添加代码,我希望有人能解决我的问题。
package test;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.WindowConstants;

public class Test extends JFrame {
    private Container main = this.getContentPane();

    public Test() {

        this.setTitle("TEST");
        this.setSize((int) (960), (int) (680));
        this.setLocation(0, 0); 
        this.setResizable(false);
        this.setUndecorated(false);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    }


    public void init() throws IOException {

        initContent();
        this.setVisible(true);
    }

    private void initContent() throws IOException {
        MapView mapPanel = new MapView();
        JScrollPane infoPanel = new JScrollPane(mapPanel);
        this.addKeyListener(new KeyListener(mapPanel));
        main.add(infoPanel, BorderLayout.CENTER);
    }
    public static void main(String[] args) throws IOException {

        Test window = new Test();
        window.init();
    }
}