Java GUI类(JTextField JTextArea)

Java GUI类(JTextField JTextArea),java,swing,for-loop,jtextfield,jtextarea,Java,Swing,For Loop,Jtextfield,Jtextarea,我是GUI和java新手,当我试图为这个问题编写代码时,actionPerformed方法出现了问题: 使用下面显示的框架布局,编写一个程序,搜索在文本字段中输入标题的电影。当用户按下搜索按钮或按ENTER键时,文本区域中将显示电影的信息(标题、年份和流派)。如果未找到该电影,请在文本区域中显示一条消息,指示该电影不存在。使用数组存储多部电影的信息 如果有人向我解释如何使此代码正常工作,我将不胜感激。 我的尝试: import javax.swing.*; import java.awt.*;

我是GUI和java新手,当我试图为这个问题编写代码时,actionPerformed方法出现了问题:

  • 使用下面显示的框架布局,编写一个程序,搜索在文本字段中输入标题的电影。当用户按下搜索按钮或按ENTER键时,文本区域中将显示电影的信息(标题、年份和流派)。如果未找到该电影,请在文本区域中显示一条消息,指示该电影不存在。使用数组存储多部电影的信息 如果有人向我解释如何使此代码正常工作,我将不胜感激。
    我的尝试:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    class movie {
        public String title;
        public String year;
        public String genre;
        public movie(String t, String y, String g) {
            title = t;
            year = y;
            genre = g;
        }
        public String toString() {
            return "TITLE: " + title + "\nYEAR: " + year + "\nGENRE: " + genre;
        }
    }
    
    public class searchMovieFrame extends JFrame implements ActionListener {
        public movie m1 = new movie("Iron Man", "2008", "Action,Adventure");
        public movie m2 = new movie("Iron Man", "2010", "Action,Adventure");
        public movie m3 = new movie("Total Recall", "2012", "Action,Adventure");
        public movie[] movies = {
            m1, m2, m3
        };
    
        private static final int width = 300;
        private static final int height = 200;
        private static final int x = 360;
        private static final int y = 150;
        private JButton search;
        private JTextField input;
        private JTextArea output;
        private JLabel message;
    
        public searchMovieFrame() {
            Container contentPane = getContentPane();
            setSize(width, height);
            setResizable(false);
            setTitle("Search Movie Frame");
            setLocation(x, y);
            contentPane.setLayout(new FlowLayout(FlowLayout.LEFT));
            message = new JLabel();
            message.setText("Enter the movie title please");
            message.setSize(150, 25);
            contentPane.add(message);
            input = new JTextField();
            input.setColumns(15);
            contentPane.add(input);
            input.addActionListener(this);
            search = new JButton("Search");
            contentPane.add(search);
            search.addActionListener(this);
            output = new JTextArea();
            output.setColumns(23);
            output.setRows(5);
            output.setEditable(false);
            contentPane.add(output);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
        }
    
        public void actionPerformed(ActionEvent event) {
            for (int i = 0; i < 3; i++)
            if (input.getText().equals(movies[i].title)) output.setText(toString());
            else output.setText("THAT MOVIE IS NOT AVAILABLE");
        }
    
        public static void main(String[] args) {
            searchMovieFrame frame = new searchMovieFrame();
            frame.setVisible(true);
        }
    }
    
    import javax.swing.*;
    导入java.awt.*;
    导入java.awt.event.*;
    班级电影{
    公共字符串标题;
    公共字符串年;
    公共弦乐体裁;
    公共电影(字符串t、字符串y、字符串g){
    title=t;
    年份=y;
    类型=g;
    }
    公共字符串toString(){
    返回“TITLE:+TITLE+”\nYEAR:+year+”\nGENRE:+genre;
    }
    }
    公共类searchMovieFrame扩展JFrame实现ActionListener{
    公共电影m1=新电影(“钢铁侠”、“2008”、“动作、冒险”);
    公共电影m2=新电影(“钢铁侠”、“2010”、“动作、冒险”);
    公共电影m3=新电影(“总召回”、“2012”、“动作、冒险”);
    公共电影[]电影={
    m1,m2,m3
    };
    专用静态最终整数宽度=300;
    专用静态最终内部高度=200;
    专用静态最终整数x=360;
    专用静态最终整数y=150;
    私有按钮搜索;
    私有JTextField输入;
    私有区域输出;
    私有JLabel消息;
    公共搜索电影框架(){
    容器contentPane=getContentPane();
    设置尺寸(宽度、高度);
    可设置大小(假);
    setTitle(“搜索电影帧”);
    设定位置(x,y);
    setLayout(新的FlowLayout(FlowLayout.LEFT));
    消息=新的JLabel();
    message.setText(“请输入电影标题”);
    消息设置大小(150,25);
    contentPane.add(消息);
    输入=新的JTextField();
    输入。设置列(15);
    contentPane.add(输入);
    input.addActionListener(this);
    搜索=新按钮(“搜索”);
    contentPane.add(搜索);
    search.addActionListener(this);
    输出=新的JTextArea();
    输出.setColumns(23);
    输出。设置行(5);
    output.setEditable(false);
    contentPane.add(输出);
    setDefaultCloseOperation(关闭时退出);
    }
    已执行的公共无效操作(操作事件){
    对于(int i=0;i<3;i++)
    if(input.getText().equals(movies[i].title))output.setText(toString());
    else output.setText(“该电影不可用”);
    }
    公共静态void main(字符串[]args){
    searchMovieFrame=新的searchMovieFrame();
    frame.setVisible(true);
    }
    }
    
    一旦找到正确的电影,您需要
    中断

    也可以使用
    Movie#toString
    而不是当前
    JFrame
    toString
    表示。不要将搜索限制在前3部电影,使用
    movies.length
    作为搜索的上限。为了提高效率,任何组件更新都应该在循环处理之后进行

    Movie searchMovie = null;
    for (int i = 0; i < movies.length; i++) {
       if (input.getText().equals(movies[i].title)) {
          searchMovie = movies[i];
          break;
       }
    }
    
    if (searchMovie == null) {
       output.setText("THAT MOVIE IS NOT AVAILABLE");
    } else {
       output.setText(searchMovie.toString());
    }
    
    moviesearchmovie=null;
    for(int i=0;i

    旁白:使用Java命名约定来区分类,例如
    Movie

    一旦找到正确的电影,您需要
    中断

    也可以使用
    Movie#toString
    而不是当前
    JFrame
    toString
    表示。不要将搜索限制在前3部电影,使用
    movies.length
    作为搜索的上限。为了提高效率,任何组件更新都应该在循环处理之后进行

    Movie searchMovie = null;
    for (int i = 0; i < movies.length; i++) {
       if (input.getText().equals(movies[i].title)) {
          searchMovie = movies[i];
          break;
       }
    }
    
    if (searchMovie == null) {
       output.setText("THAT MOVIE IS NOT AVAILABLE");
    } else {
       output.setText(searchMovie.toString());
    }
    
    moviesearchmovie=null;
    for(int i=0;i
    旁白:使用Java命名约定来区分类,例如
    Movie