当前位置: 首页 > 知识库问答 >
问题:

点击JButton显示图像

陶柏
2023-03-14

正如标题所示,我正在尝试创建一个有几个按钮的程序,每个按钮在单击时都会显示一张图片。但是,我想知道,如果不使用此处所示的graphic类,也不使容器全球化,这是否可能。我尝试了这个,但是,我的程序似乎没有将图像添加到我的面板中。

代码如下:

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class PhotoAlbum extends JFrame implements ActionListener{

private JPanel imagePanel;
private JPanel labelPanel;
public PhotoAlbum(){
    super();
    Container contentPane = getContentPane();
    setSize(1800, 1000);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    setTitle("Button Demo"); //Theme here
    contentPane.setBackground(Color.blue);
    contentPane.setLayout(new BorderLayout());

    createButtons(contentPane);
    instruction(contentPane);
    createImageLabel(contentPane);
}

public void instruction(Container contentPane){
    JPanel instruction = new JPanel();
    instruction.setLayout(new FlowLayout());
    instruction.setBackground(Color.yellow);
    Font fontType1 = new Font("Comic Sans MS", Font.BOLD, 40);
    JLabel instruction1 = new JLabel("Click on the button to view a"
            + " photo.");
    instruction1.setForeground(Color.BLUE);
    instruction1.setFont(fontType1);
    instruction.add(instruction1);
    contentPane.add(instruction, BorderLayout.SOUTH);
}

public void createButtons(Container contentPane){
    labelPanel = new JPanel();
    labelPanel.setBackground(Color.pink);
    labelPanel.setLayout(new GridLayout(9,1));

    String[] imageLabel = new String[9];
    imageLabel[0] = "Image 1";
    imageLabel[1] = "Image 2";
    imageLabel[2] = "Image 3";
    imageLabel[3] = "Image 4";
    imageLabel[4] = "Image 5";
    imageLabel[5] = "Image 6";
    imageLabel[6] = "Image 7";
    imageLabel[7] = "Image 8";
    imageLabel[8] = "Exit";

    Color[] color = new Color[9];
    color[0] = Color.cyan;
    color[1] = new Color(242, 121, 234);
    color[2] = Color.red;
    color[3] = Color.green;
    color[4] = Color.blue;
    color[5] = new Color(1, 255, 248);
    color[6] = Color.magenta;
    color[7] = new Color(205, 255, 1);
    color[8] = new Color(205, 255, 1);

    Font fontType = new Font("Times New Roman", Font.BOLD, 30);


    JButton[] button = new JButton[9];
    for (int i=0; i<button.length; i++)
    {
        button[i] = new JButton(imageLabel[i]);
        button[i].addActionListener(this);
        button[i].setBackground(color[i]);
        button[i].setFont(fontType);
        labelPanel.add(button[i]);
    }

    contentPane.add(labelPanel, BorderLayout.WEST);
}

public void createImageLabel(Container contentPane){
    imagePanel = new JPanel();
    imagePanel.setBackground(Color.magenta);
    contentPane.add(imagePanel, BorderLayout.CENTER);
}

public void actionPerformed(ActionEvent event){
    String actionCommand = event.getActionCommand();
    if(actionCommand.equals("Image 1")) {
        JLabel addImage = new JLabel();
        ImageIcon image = new ImageIcon("picture1.jpg");
        addImage.setIcon(image);
        imagePanel.add(addImage);
        imagePanel.setBackground(Color.yellow);
    }

    else if(actionCommand.equals("Exit"))
        System.exit(0);
    else System.out.println("Error in button interface.");

}

public static void main(String[] args)
{
    PhotoAlbum buttonGui= new PhotoAlbum();
    buttonGui.setVisible(true);
}


}

共有1个答案

董翰池
2023-03-14

正如Andrew在他的评论中建议的那样。像下面这样重构您的代码。

if(actionCommand.equals("Image 1")) {
    JLabel addImage = new JLabel();
    URL url = getClass().getResource("picture1.jpg");
    if (url != null) {
        ImageIcon image = new ImageIcon(url);
        addImage.setIcon(image);
        imagePanel.add(addImage);
        imagePanel.setBackground(Color.yellow);
        this.revalidate();
    }
}

和图1。jpg和我有相册在同一个地方。Java语言

否则,您的代码工作正常。尽管大图像无法正确显示。

 类似资料:
  • 问题内容: 我有个问题。我不知道如何通过单击JButton显示图像。 我有一个可以显示和隐藏图像的类: 我正在使用MVC,所以我想在我的控制器地图中使用JButton的代码,但是我不知道该怎么做。 单击按钮保持器时需要显示图像。 问题答案: 就像别人说的一样,总是用来显示图像。这样,很容易在需要时添加/删除它们,而不是绘画。此外,在您的代码中您正在重写,因为如果所讨论的组件具有一个,我们希望重写各

  • 本文向大家介绍javascript实现点击小图显示大图,包括了javascript实现点击小图显示大图的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javascript实现点击小图显示大图的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 类似于微信的头像点击放大显示效果。 [Code4App.com]

  • 在页面上有两个框 这两个框是一个数组的数据类似与 [ 这种格式的我去循环然后画的框 想要实现无论点击这两行哪行 这两行都高亮显示 用过根据id查找页面元素,但id只能返回第一个所以只能第一个高亮

  • 我一直在TkinterGUI上工作,而且是新手。现在我想使用Opencv显示一个图像,在一个单独的窗口中单击按钮,因此首先我使用askopenfilename()获取图像路径,然后将该值传递给cv2。下面是imread()代码。 图像显示在一个新窗口中,但当我试图关闭它时,Tkinter应用程序也会关闭。我需要在图像上执行一些任务,然后在不影响Tkinter应用程序的情况下按键关闭它。它可以用线程

  • 我有一个单选按钮,一旦被选中,我想显示几个与之相关的选项。。选项在相关bean上。我该怎么做?