Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何制作可点击的图像?_Java_Image_Swing_Jbutton - Fatal编程技术网

Java 如何制作可点击的图像?

Java 如何制作可点击的图像?,java,image,swing,jbutton,Java,Image,Swing,Jbutton,我完全不知所措,不知所措。我最近开始用Java编程。我想制作一个程序,显示用户可以点击的图像(带有图像的按钮),然后播放声音。我看了很多教程,但当我学习它们时,它们都不起作用。此外,我不知道是否应该使用swing、javaFX或awt,或者是否需要为图像和按钮创建一个新文件。请提供帮助。您可以将图像对象包装在锚定标记内: 您可以将图像对象包装在锚定标记内: 我认为如果您是初学者,可以从swing和netbeans开始:这是一个简单的教程,介绍如何在swing中处理图像: 其他优秀教程: 正

我完全不知所措,不知所措。我最近开始用Java编程。我想制作一个程序,显示用户可以点击的图像(带有图像的按钮),然后播放声音。我看了很多教程,但当我学习它们时,它们都不起作用。此外,我不知道是否应该使用swing、javaFX或awt,或者是否需要为图像和按钮创建一个新文件。请提供帮助。

您可以将图像对象包装在锚定标记内:


您可以将图像对象包装在锚定标记内:


我认为如果您是初学者,可以从swing和netbeans开始:这是一个简单的教程,介绍如何在swing中处理图像:

其他优秀教程:
正文:

视频:

我认为如果您是初学者,可以从swing和netbeans开始:这是一个简单的教程,介绍如何在swing中处理图像:

其他优秀教程:
正文:

视频:

就我个人而言,我最近一直在尝试Swing,我认为它相当直观,至少在基本层面上是如此。 您想要的是图像对象的线条,添加了一个侦听器,用于对单击/您希望对其作出反应的任何内容进行反应。 大概是这样的:

或者,您可以使用swing库中的内置按钮对象并为其设置图像。您仍然需要将侦听器配置为执行您希望它执行的任何操作。 按照这些思路:


.

就我个人而言,我最近一直在尝试Swing,我认为它相当直观,至少在基本层面上是如此。 您想要的是图像对象的线条,添加了一个侦听器,用于对单击/您希望对其作出反应的任何内容进行反应。 大概是这样的:

或者,您可以使用swing库中的内置按钮对象并为其设置图像。您仍然需要将侦听器配置为执行您希望它执行的任何操作。 按照这些思路:


.

您应该使用Swing或JavaFX…
AWT非常古老,除非没有其他方法,否则不应该使用它(我听说在OSX上,有时Swing会出现一些问题……。
Swing是java中最常见的GUI工具包,但Oracle宣布JavaFX将完全取代Swing。
在我看来,Swing更容易启动,因为有像eclipse window builder这样的工具,可以让您在图形界面中创建应用程序,但JavaFX更可能在将来使用,因为它比Swing(如CSS皮肤等)有一些很大的改进。

因此,您基本上必须决定您更喜欢什么:

JavaFX将是未来的工具包——Swing仍然是最常用的工具包,并提供更多支持等


如果您使用的是Swing,我认为JLabel可以包含一个图像-如果您添加一个鼠标单击的侦听器,这可能是一种方法…

您应该使用Swing或JavaFX…
AWT非常古老,除非没有其他方法,否则不应该使用它(我听说在OSX上,有时Swing会出现一些问题……。
Swing是java中最常见的GUI工具包,但Oracle宣布JavaFX将完全取代Swing。
在我看来,Swing更容易启动,因为有像eclipse window builder这样的工具,可以让您在图形界面中创建应用程序,但JavaFX更可能在将来使用,因为它比Swing(如CSS皮肤等)有一些很大的改进。

因此,您基本上必须决定您更喜欢什么:

JavaFX将是未来的工具包——Swing仍然是最常用的工具包,并提供更多支持等


如果您使用的是Swing,我认为JLabel可以包含一个图像-如果您添加一个鼠标点击的侦听器,这可能就是解决方法…

搜索更多:它有一个答案:

确保类路径中有
/class/path/to/image.png
。如果是硬盘上的图像,你必须先加载它,如我链接的答案所述

编辑:@jewelsea将JavaFX中的示例转换为Swing:


搜索更多:它有一个答案:

确保类路径中有
/class/path/to/image.png
。如果是硬盘上的图像,你必须先加载它,如我链接的答案所述

编辑:@jewelsea将JavaFX中的示例转换为Swing:


下面是一个使用JavaFX的示例。您的问题被标记为Swing,但是问题文本提到您正在考虑JavaFX,所以我想我应该提供这个解决方案,以便您可以看到JavaFX样式的实现是什么样子的


我真的不知道Swing,所以我不会提供解决方案,因此,我不会在这里提供一个库建议,并鼓励您对潜在的技术进行自己的研究,并决定适合您的应用程序需求和技能集的最佳匹配。您的问题被标记为Swing,但是问题文本提到您正在考虑JavaFX,所以我想我应该提供这个解决方案,以便您可以看到JavaFX样式的实现是什么样子的


我真的不知道Swing,所以我不会提供解决方案,因此,我不会在这里提供一个库建议,并鼓励您对潜在技术进行自己的研究,并决定适合您的应用程序要求和技能集的最佳匹配。

这是您的第一个程序吗?最简单的方法是在图像周围创建一个矩形,然后使用矩形类“.contains()方法将一个点作为鼠标位置。在这里翻转一个布尔值来做你想做的事。
我完全不知所措。
-我们从上一节的Swing教程开始学习工作代码和解释<代码>我看了很多教程,但当我遵循它们时,它们不起作用-我们下载教程代码
Icon img = new ImageIcon("/class/path/to/image.png");
JButton btn = new JButton(img);
public class ImageAudioPlayer extends JFrame {

    private static final String BUTTON_ICON_LOC =
            "http://icons.iconarchive.com/icons/mirella-gabriele/fantasy-mediaeval/128/Poison-red-icon.png";
    private static final String AUDIO_FILE_LOC =
            "http://soundbible.com/grab.php?id=1019&type=wav";

    public ImageAudioPlayer() throws MalformedURLException {
        super("Audion button");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container cp = getContentPane();
        Icon icon = new ImageIcon(new URL(BUTTON_ICON_LOC));
        JButton button = new JButton(icon);
        cp.add(button, BorderLayout.CENTER);
        button.addActionListener(new ActionListener() {
            @Override public void actionPerformed(ActionEvent e) {
                playAudio();
            }
        });
    }

    private void playAudio() {
        // Not nearly as easy as JavaFX, and cannot play MP3
        try {
            URL url = new URL(AUDIO_FILE_LOC);
            final Clip clip = AudioSystem.getClip();
            AudioInputStream ais = AudioSystem.getAudioInputStream(url);
            clip.open(ais);
            clip.start();
            clip.addLineListener(new LineListener() {
                @Override public void update(LineEvent event) {
                    if (event.getType() == LineEvent.Type.STOP)
                        clip.close();
                }
            });
        } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws MalformedURLException {
        ImageAudioPlayer iap = new ImageAudioPlayer();
        iap.pack();
        iap.setVisible(true);
    }
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.*;
import javafx.scene.layout.StackPane;
import javafx.scene.media.AudioClip;
import javafx.stage.Stage;

public class ImageAudioPlayer extends Application {
    private static final String BUTTON_ICON_LOC =
            "http://icons.iconarchive.com/icons/mirella-gabriele/fantasy-mediaeval/128/Poison-red-icon.png";
    private static final String AUDIO_FILE_LOC =
            "http://soundbible.com/mp3/Power_Up_Ray-Mike_Koenig-800933783.mp3";

    @Override
    public void start(Stage stage) throws Exception {
        final AudioClip audioClip = new AudioClip(AUDIO_FILE_LOC);
        final ImageView graphic = new ImageView(new Image(BUTTON_ICON_LOC));

        Button button = new Button(null, graphic);
        button.setStyle("-fx-base: mistyrose;");
        button.setOnAction(event -> audioClip.play());

        StackPane layout = new StackPane(button);
        layout.setPadding(new Insets(10));
        stage.setScene(new Scene(layout));
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}