【问题标题】:picture user input without radio buttons java图片用户输入没有单选按钮java
【发布时间】:2014-11-24 23:50:21
【问题描述】:

我正在创建一个程序,在该程序中,用户单击作为问题输入提供的 4 张图片中的一张。回答完问题后,窗口是转到下一个问题。我该怎么办?我应该为图像使用案例还是更有效的方式?

例如: 问题是哪个图像是朵拉? 会有一张多拉、布拉德皮特、赛琳娜戈麦斯和达菲鸭的照片。 如果用户单击图像(没有单选按钮),程序应该保存输入并继续下一个问题。

我的问题更具体地说是关于如何使用户单击可以保存的输入的图像。

【问题讨论】:

  • 存储一个代表点击图片的int?例如,int answer = 0; if (image was clicked) answer = 1; etc.
  • 谢谢!你知道我怎样才能让图片“可点击”吗? (我不想有单选按钮)

标签: java image radio-button user-input


【解决方案1】:

我的建议是使用 ImageIcon 构造函数创建 JLabels,让您的类实现 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();
            }
        });
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多