包含信息的Java ActionListeners
我有一个程序,我想点击按钮,让他们把信息传递给他们的ActionListener。这是一个图书馆程序,用户点击一个图书图像,打开一个新的JFrame,其中包含关于该特定图书的信息。如何根据按下的按钮分别显示信息?(我想要一个通用的actionListener,而不是单个的,因为我有200多本书。)你可以。。。 使用键控按钮的包含信息的Java ActionListeners,java,user-interface,actionlistener,Java,User Interface,Actionlistener,我有一个程序,我想点击按钮,让他们把信息传递给他们的ActionListener。这是一个图书馆程序,用户点击一个图书图像,打开一个新的JFrame,其中包含关于该特定图书的信息。如何根据按下的按钮分别显示信息?(我想要一个通用的actionListener,而不是单个的,因为我有200多本书。)你可以。。。 使用键控按钮的映射,将值链接到该按钮。因此,当单击按钮时,您将使用JButton作为键,并向Map查询相关值 查看更多详细信息 你可以。。。 创建一个简单的、自定义的ActionListe
映射
,将值链接到该按钮。因此,当单击按钮时,您将使用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));
这似乎是一个非常基本的问题,只要稍加研究就能解决。报告涵盖了这一点。