JAVA绘图矩形
我有这样的代码:JAVA绘图矩形,java,Java,我有这样的代码: public class TestPane extends JPanel { private Rectangle selection = new Rectangle(); private Point clickPoint; private BufferedImage tempimage; public TestPane() { try { tempima
public class TestPane extends JPanel {
private Rectangle selection = new Rectangle();
private Point clickPoint;
private BufferedImage tempimage;
public TestPane() {
try {
tempimage = ImageIO.read(new File("/Users/droop//omega.jpg"));
} catch (IOException ex) {
ex.printStackTrace();
}
MouseAdapter ma = new MouseAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
int minX = Math.min(e.getX(), clickPoint.x);
int minY = Math.min(e.getY(), clickPoint.y);
int maxX = Math.max(e.getX(), clickPoint.x);
int maxY = Math.max(e.getY(), clickPoint.y);
selection.x = minX;
selection.y = minY;
selection.width = maxX - minX;
selection.height = maxY - minY;
repaint();
}
@Override
public void mousePressed(MouseEvent e) {
clickPoint = new Point(e.getPoint());
}
};
addMouseListener(ma);
addMouseMotionListener(ma);
}
@Override
public Dimension getPreferredSize() {
return tempimage == null ? new Dimension(200, 200) : new Dimension(tempimage.getWidth(), tempimage.getHeight());
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
int x = (getWidth() - tempimage.getWidth()) / 2;
int y = (getHeight() - tempimage.getHeight()) / 2;
g2d.drawImage(tempimage, x, y, this);
if (selection.width > 0 && selection.height > 0) {
g2d.setColor(new Color(0, 0, 255, 64));
g2d.fill(selection);
g2d.setColor(Color.BLUE);
g2d.draw(selection);
}
g2d.dispose();
}
}
我想做的是:更改此代码,这样我就可以通过单击按钮来更改图片。所以我想创建我的测试窗格并放在框架上,但稍后通过单击按钮加载图像。
还有一个问题:有时图片太大,无法在测试窗格上显示,所以我添加了scrools,但是鼠标单击的x和y坐标与绘制形状不同步。当卷轴打开,我点击鼠标时,矩形就被画在上面而不是确切的位置。
请帮助从和开始“有时图片太大,无法在TestPane上显示,因此我添加了scrools,但鼠标单击的x和y坐标与绘制形状不同步。当滚动条打开且我进行鼠标单击时,矩形将绘制在上方而不是确切的位置”-使用
JScrollPane
,它会自行处理其余部分,所以我知道如何使用JButtons,Action Listeners:P我尝试的是:我创建了一个按钮,我将所有图片放入一个数组中,然后用鼠标单击我更改图像并将其放在测试窗格中,所以我使用了以下代码:tempimage=ImageIO.read(新文件(“/Users/droop//omega.jpg”);从类中删除并更改它,因此每次单击按钮时,我都会在测试窗格上显示新的图片,但矩形中的绘图不起作用……那么也许你应该发布该代码,所以我将你的代码,更改图像,粘贴到滚动窗格中,调整了窗口的大小,使滚动条出现,选择突出显示对我来说很好。我喜欢你在网上找到的代码,哦,等等,那是我的。。。非常棒,不是吗;)