Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 ActionListeners_Java_User Interface_Actionlistener - Fatal编程技术网

包含信息的Java ActionListeners

包含信息的Java ActionListeners,java,user-interface,actionlistener,Java,User Interface,Actionlistener,我有一个程序,我想点击按钮,让他们把信息传递给他们的ActionListener。这是一个图书馆程序,用户点击一个图书图像,打开一个新的JFrame,其中包含关于该特定图书的信息。如何根据按下的按钮分别显示信息?(我想要一个通用的actionListener,而不是单个的,因为我有200多本书。)你可以。。。 使用键控按钮的映射,将值链接到该按钮。因此,当单击按钮时,您将使用JButton作为键,并向Map查询相关值 查看更多详细信息 你可以。。。 创建一个简单的、自定义的ActionListe

我有一个程序,我想点击按钮,让他们把信息传递给他们的ActionListener。这是一个图书馆程序,用户点击一个图书图像,打开一个新的JFrame,其中包含关于该特定图书的信息。如何根据按下的按钮分别显示信息?(我想要一个通用的actionListener,而不是单个的,因为我有200多本书。)

你可以。。。 使用键控按钮的
映射
,将值链接到该按钮。因此,当单击按钮时,您将使用
JButton
作为键,并向
Map
查询相关值

查看更多详细信息

你可以。。。 创建一个简单的、自定义的
ActionListener
,它以“book”为参考,在单击时能够执行所需的操作,但它是为单个book定制的

类似于

public class BookActionHandler implements ActionListener {
    private Book book;
    public BookActionHandler(Book book) {
        this.book = book;
    }

    public void actionPerformed(ActionEvent evt) {
        BookFrame bookFrame = new BookFrame(book); 
        //...
        bookFrame.setVisible(true);
    }
}
for (Book book : listOfBooks) {
    JButton btn = new JButton(book.getTitle());
    btn.addActionListener(new BookActionHandler(book));
    //...
}
public class BookActionHandler extends AbstractAction {
    private Book book;
    public BookActionHandler(Book book) {
        this.book = book;
        putValue(NAME, book.getTitle());
        putValue(LARGE_ICON_KEY, book.getIcon());
    }

    public void actionPerformed(ActionEvent evt) {
        BookFrame bookFrame = new BookFrame(book); 
        //...
        bookFrame.setVisible(true);
    }
}
for (Book book : listOfBooks) {
    JButton btn = new JButton(new BookActionHandler(book));
    //...
}
然后你可以创建你的按钮,比如

public class BookActionHandler implements ActionListener {
    private Book book;
    public BookActionHandler(Book book) {
        this.book = book;
    }

    public void actionPerformed(ActionEvent evt) {
        BookFrame bookFrame = new BookFrame(book); 
        //...
        bookFrame.setVisible(true);
    }
}
for (Book book : listOfBooks) {
    JButton btn = new JButton(book.getTitle());
    btn.addActionListener(new BookActionHandler(book));
    //...
}
public class BookActionHandler extends AbstractAction {
    private Book book;
    public BookActionHandler(Book book) {
        this.book = book;
        putValue(NAME, book.getTitle());
        putValue(LARGE_ICON_KEY, book.getIcon());
    }

    public void actionPerformed(ActionEvent evt) {
        BookFrame bookFrame = new BookFrame(book); 
        //...
        bookFrame.setVisible(true);
    }
}
for (Book book : listOfBooks) {
    JButton btn = new JButton(new BookActionHandler(book));
    //...
}
你可以。。。 使用
Action
API将给定的“book”与按钮关联,允许
Action
配置按钮,并在单击按钮时为其提供执行所需操作的方法

有关更多详细信息,请参阅

类似于

public class BookActionHandler implements ActionListener {
    private Book book;
    public BookActionHandler(Book book) {
        this.book = book;
    }

    public void actionPerformed(ActionEvent evt) {
        BookFrame bookFrame = new BookFrame(book); 
        //...
        bookFrame.setVisible(true);
    }
}
for (Book book : listOfBooks) {
    JButton btn = new JButton(book.getTitle());
    btn.addActionListener(new BookActionHandler(book));
    //...
}
public class BookActionHandler extends AbstractAction {
    private Book book;
    public BookActionHandler(Book book) {
        this.book = book;
        putValue(NAME, book.getTitle());
        putValue(LARGE_ICON_KEY, book.getIcon());
    }

    public void actionPerformed(ActionEvent evt) {
        BookFrame bookFrame = new BookFrame(book); 
        //...
        bookFrame.setVisible(true);
    }
}
for (Book book : listOfBooks) {
    JButton btn = new JButton(new BookActionHandler(book));
    //...
}
然后你可以创建你的按钮,比如

public class BookActionHandler implements ActionListener {
    private Book book;
    public BookActionHandler(Book book) {
        this.book = book;
    }

    public void actionPerformed(ActionEvent evt) {
        BookFrame bookFrame = new BookFrame(book); 
        //...
        bookFrame.setVisible(true);
    }
}
for (Book book : listOfBooks) {
    JButton btn = new JButton(book.getTitle());
    btn.addActionListener(new BookActionHandler(book));
    //...
}
public class BookActionHandler extends AbstractAction {
    private Book book;
    public BookActionHandler(Book book) {
        this.book = book;
        putValue(NAME, book.getTitle());
        putValue(LARGE_ICON_KEY, book.getIcon());
    }

    public void actionPerformed(ActionEvent evt) {
        BookFrame bookFrame = new BookFrame(book); 
        //...
        bookFrame.setVisible(true);
    }
}
for (Book book : listOfBooks) {
    JButton btn = new JButton(new BookActionHandler(book));
    //...
}

我想出来了,所以我会在这里发布,以防其他人也有同样的问题:

    class BookListener implements ActionListener{
        public Book myBook;
        public BookListener(Book b) {
            this.myBook = b;
        }
    public void actionPerformed(ActionEvent e) {
您只需将其插入类定义中,并在调用actionListener时:

    bookButton.addActionListener(new BookListener(b));

这似乎是一个非常基本的问题,只要稍加研究就能解决。报告涵盖了这一点。