我正在创建一个程序,在这个程序中,用户点击4幅图片中的1张,作为他们对问题的输入。回答完问题后,窗口将转到下一个问题。我该怎么做?我是应该用用例来处理图像,还是说它们是更有效的方法?
例如:问题是哪个图像是Dora的?还有朵拉、布拉德·皮特、赛琳娜·戈麦斯和达菲·达克的形象。如果用户单击图像(没有单选按钮),程序应该保存输入,然后转到下一个问题。
我的问题更具体地是如何使图像用户点击一个输入,可以保存。
发布于 2014-11-24 15:50:21
我建议使用JLabels构造函数创建ImageIcon,让类实现MouseListener,然后为每个JLabels使用addMouseListener方法。您是要为每个实例创建一个匿名MouseListener,还是只使用类实例,这取决于您。下面是一个帮助您入门的示例:
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
public class Test implements MouseListener {
private JLabel imageLabel1, imageLabel2;
public Test() {
JFrame frame = new JFrame("Test");
frame.setLayout(new BorderLayout());
JLabel introLabel = new JLabel("Click an image");
introLabel.setHorizontalAlignment(SwingConstants.CENTER);
frame.add(introLabel,BorderLayout.NORTH);
imageLabel1 = new JLabel(new ImageIcon("image1.png"));
frame.add(imageLabel1,BorderLayout.WEST);
imageLabel1.addMouseListener(this);
imageLabel2 = new JLabel(new ImageIcon("image2.png"));
frame.add(imageLabel2,BorderLayout.EAST);
imageLabel2.addMouseListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
@Override
public void mouseClicked(MouseEvent ev) {
if (ev.getSource() == imageLabel1)
System.out.println("Image 1 clicked");
if (ev.getSource() == imageLabel2)
System.out.println("Image 2 clicked");
}
@Override public void mouseEntered(MouseEvent ev) {}
@Override public void mouseExited(MouseEvent ev) {}
@Override public void mousePressed(MouseEvent ev) {}
@Override public void mouseReleased(MouseEvent ev) {}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Test();
}
});
}
}https://stackoverflow.com/questions/27080281
复制相似问题