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中执行此操作?