Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何扩展必要区域_Java_Swing_Zooming_Paintcomponent_Mousewheel - Fatal编程技术网

Java-如何扩展必要区域

Java-如何扩展必要区域,java,swing,zooming,paintcomponent,mousewheel,Java,Swing,Zooming,Paintcomponent,Mousewheel,我使用简单的图示器,我想缩放鼠标滚轮上的红色区域。我添加mouseweelllistener //constructor { addMouseWheelListener(new MouseAdapter() { @Override public void mouseWheelMoved(MouseWheelEvent e) { double delta = 0.05f * e.getPreciseWheelRotation();

我使用简单的图示器,我想缩放鼠标滚轮上的红色区域。我添加
mouseweelllistener

//constructor {
    addMouseWheelListener(new MouseAdapter() {
        @Override
        public void mouseWheelMoved(MouseWheelEvent e) {
            double delta = 0.05f * e.getPreciseWheelRotation();
            scale += delta;
            revalidate();
            repaint();
        }
    });
}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g;
    AffineTransform at = new AffineTransform();
    at.scale(scale, scale);
    g2.setTransform(at);
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    // read points in series and add series in dataset...
    // draw white background
    g2.setColor(Color.WHITE);
    g2.fillRect(padding + labelPadding, padding, getWidth() - (2 * padding) - labelPadding, getHeight() - 2 * padding - labelPadding);

    // create hatch marks and grid lines for x and y axis...
    // create x and y axes 
    g2.drawLine(padding + labelPadding, getHeight() - padding - labelPadding, padding + labelPadding, padding);
    g2.drawLine(padding + labelPadding, getHeight() - padding - labelPadding, getWidth() - padding, getHeight() - padding - labelPadding);
    //draw graphs...
}

@Override
public Dimension getPreferredSize() {
    Dimension size = new Dimension(width, height);
    size.width = Math.round(size.width * scale);
    size.height = Math.round(size.height * scale);
    return size;
}

private static void createAndShowGui() {
    ...
    SimpleGrapher2 mainPanel = new SimpleGrapher2(scores);
    mainPanel.setPreferredSize(new Dimension(width, height));
    JFrame frame = new JFrame("DrawGraph");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(mainPanel);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

public static void main(String[] args) {
  SwingUtilities.invokeLater(new Runnable() {
     public void run() {
        createAndShowGui();
     }
  });
} }

那么,如何只缩放我的红色区域而不是所有程序窗口


红色区域应为单独的JPanel。至于细节,恐怕我不太了解你的问题,不能多说。希望其他人能做得更好。首先,不要在油漆法中添加鼠标引擎听者。其次考虑提供一个可以证明你的可运行的例子。problem@MadProgrammer我添加了另一个带有照片的链接,如气垫船所示,核心图形区域应该是它自己的组件,因为若你们不这样做的话,你们会在剪裁边界和其他有趣的事情上遇到问题t@MadProgrammer如何在paintComponent中执行此操作?