【发布时间】:2016-03-09 06:13:13
【问题描述】:
所以我有几个问题: 1)这段代码可以吗?还是可以写得更好? (我将在最终版本中有一个带有图片的数组) 2)当我单击下一步按钮时,我在第一张图片上绘制的矩形停留在第二张图片上,如何清除它?所以按下下一步按钮后新图片上没有矩形? 3)我希望能够在拖动鼠标按钮(绘制矩形时)时自动滚动,但它并没有真正起作用...... 请帮忙
public class SelectionExample {
static public TestPane panelek;
static public BufferedImage tempimage;
public static void main(String[] args) {
new SelectionExample();
}
public SelectionExample() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
panelek = new TestPane();
panelek.setPreferredSize(new Dimension(100, 100));
panelek.setAutoscrolls(true);
JScrollPane scrollPane = new JScrollPane(panelek);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
frame.add(scrollPane, BorderLayout.CENTER);
JButton next = new JButton("NEXT");
frame.add(next, BorderLayout.PAGE_START);
try {
tempimage = ImageIO.read(new File("D:/test/temp1.jpg"));
} catch (IOException ex) {
Logger.getLogger(SelectionExample.class.getName()).log(Level.SEVERE, null, ex);
}
next.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
try {
tempimage = ImageIO.read(new File("D:/test/temp2.jpg"));
} catch (IOException ex) {
Logger.getLogger(SelectionExample.class.getName()).log(Level.SEVERE, null, ex);
}
panelek.repaint();
}
});
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
【问题讨论】:
-
矩形是由您的
paintComponent根据selection的值绘制的,因此当您移至下一张图像时,您可能需要清除/重置这些值 -
拖拽
JScrollPaneexample -
嗨,所以在下一个按钮的动作监听器中,我应该将所有选择值设置为 0 吗?我刚刚用 JscrollPane 检查了这段代码,但它没有帮助....我可以在鼠标移动时在图片中移动,问题是我无法同时绘制矩形并在图片中移动... .
-
好的,那么你认为你可以如何让它发挥作用?当您想绘制一个选择矩形时,您如何告诉
JScrollPane不是“拖动”?或者你想两者都做?至于矩形清除,我会在您的面板中有一个方法,可能称为clearSelection这样做 -
我想要的是:如果图片太大而无法在面板上显示我想要滚动 - 我有它,但是当我开始绘制矩形时,我会说右边(当前视图结束)但我仍在拖动我想要自动滚动到右侧。所以当前视图(部分图片)移动我希望你理解