Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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 如何添加.jpg图像以与列表项相对应?_Java_Arrays_List_Jpeg - Fatal编程技术网

Java 如何添加.jpg图像以与列表项相对应?

Java 如何添加.jpg图像以与列表项相对应?,java,arrays,list,jpeg,Java,Arrays,List,Jpeg,当选择单选按钮时,我的程序会随机显示一个餐厅。我现在想做的是在选中单选按钮时显示的文本下方显示餐厅徽标的图像。我真的不知道我需要做什么,或者我需要在哪里寻找关于如何实现这一目标的信息。提前感谢您的时间和帮助 导入TrySource.TryWindow; 导入java.awt.BorderLayout; 导入java.awt.Color; 导入javax.swing.JLabel; 导入java.awt.event.ItemEvent; 导入java.awt.event.ItemListener

当选择单选按钮时,我的程序会随机显示一个餐厅。我现在想做的是在选中单选按钮时显示的文本下方显示餐厅徽标的图像。我真的不知道我需要做什么,或者我需要在哪里寻找关于如何实现这一目标的信息。提前感谢您的时间和帮助

导入TrySource.TryWindow; 导入java.awt.BorderLayout; 导入java.awt.Color; 导入javax.swing.JLabel; 导入java.awt.event.ItemEvent; 导入java.awt.event.ItemListener; 导入java.util.array; 导入java.util.Random; 导入javax.swing.*; 公共类TrySomethingNew扩展了JFrame { //选择颜色的单选按钮 私有JRadioButton jrbMexican,jrbItalian; JLabel jlblResult; //声明用于显示消息的面板 私人TryWindow TryWindow; //文本结果区域 私人JLabel jlblRestaurantName; //主要方法 公共静态无效字符串[]args { TrySomethingNew帧=新TrySomethingNew; frame.pack; frame.SetSize500500; 尝试新事物; frame.setDefaultCloseOperationJFrame.EXIT_ON_CLOSE; frame.setLocationRelativeTonull;//将帧居中 frame.setVisibletrue; } 公众尝试 { //创建MovingMessageCanvas实例并设置颜色 让我们试试这个。; TryWindow.setBackgroundColor.WHITE; //用于固定单选按钮的面板 JPanel jpRadioButtons=新的JPanel; jpRadioButtons.setboordernewjavax.swing.border.titledborder选择一种食物类型; jpRadioButtons.addjrbMexican=新的JRadioButtonMexican; jpRadioButtons.addjrbItalian=新的jradiobuttonalian; //分组单选按钮 按钮组btg=新按钮组; btg.addjrbMexican; btg.addjrbItalian; //小组将举行会议 JPanel jpResultPanel=新的JPanel; jpResultPanel.setboordernewjavax.swing.border.TitledBorderResult; //将面板放置在框架中 SetLayoutNewBorderLayout; addjpRadioButtons,BorderLayout.NORTH; addjpResultPanel,BorderLayout.CENTER; //使用按钮注册侦听器 jrbMexican.addItemListenernew EventListener; jrbItalian.addItemListenernew EventListener; jlblRestaurantName=新的JLabel; jpResultPanel.addjlbrestaurantname; jlblRestaurantName.setVisibletrue; }//端干管 //处理单选按钮选择 类EventListener实现ItemListener { 公共无效itemStateChangedItemEvent e { 如果选择了jrbMexican.iss { java.util.List mexicanList=Arrays.asList 密苏里州斯普林菲尔德格伦斯通大道北乔斯·洛科斯853号,邮编:65802417 831-1300, 密苏里州斯普林菲尔德坎贝尔大道2118号墨西哥餐厅65807417 887-1401; 随机随机化器=新随机; 字符串random=mexicanList.getrandomizer.nextIntmexicanList.size; jlbrestaurantname.setTextrandom; }//如果选择jrbMexican,则结束 如果jrbItalian.isSelected { java.util.List=Arrays.asList Zios意大利厨房美国密苏里州斯普林菲尔德金斯利街1249 E号,邮编65804417 889-1919, 密苏里州斯普林菲尔德德尔马街班比诺斯咖啡馆141号,邮编65807417 862-9999; 随机随机化器=新随机; String random=italianList.getrandomizer.NextInItalianList.size; jlbrestaurantname.setTextrandom; }//如果选择jrbItalian,则结束 }//结束项状态已更改 }//EndEventListener }//结束尝试
首先,创建一个模型类来保存有关餐厅的信息

package com.ggl.testing;

import java.awt.Image;

public class Restaurant {

    private final Image image;

    private final RestaurantType restaurantType;

    private final String name;
    private final String address;
    private final String phoneNumber;

    public Restaurant(Image image, RestaurantType restaurantType, String name,
            String address, String phoneNumber) {
        this.image = image;
        this.restaurantType = restaurantType;
        this.name = name;
        this.address = address;
        this.phoneNumber = phoneNumber;
    }

    public Image getImage() {
        return image;
    }

    public String getName() {
        return name;
    }

    public String getAddress() {
        return address;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public RestaurantType getRestaurantType() {
        return restaurantType;
    }

    public enum RestaurantType {
        MEXICAN, ITALIAN
    }

}
接下来,修改代码以使用Restaurant类

定义一个餐馆列表

    private List<Restaurant> restaurants = new ArrayList<>();
最后,修改itemStateChanged方法以使用餐厅列表

您必须从Java项目中读取图像。这里有一种方法

private Image getImage(String fileName) {
    try {
        return ImageIO.read(getClass().getResourceAsStream(fileName));
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}
将图像放在与Java源代码相同的目录中。这样,就可以将文件名传递给getImage方法。不需要路径字符串

在构建GUI之前,请阅读所有图像。您只需阅读一次图像。

文字下方显示徽标您使用了什么来显示文字?杰拉贝尔?JTextField?
private Image getImage(String fileName) {
    try {
        return ImageIO.read(getClass().getResourceAsStream(fileName));
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}