如何从Java Swing的JPanel
父窗口中的JFrame
组件中捕获动作事件?
我很难尝试在Swing中制作自定义组件。
我得到的想法是在Swing中创建一个自定义JPanel,其中包含一些JButton
,并在JFrame父窗口中捕获这些按钮上的动作事件。
我想将方法addActionListener()
实现到我的自定义JPanel,就像它是一个按钮一样。
我是否必须从JComponent
而不是JPanel
延伸?
非常感谢您的帮助和时间。
package pizzeria.interfaz;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
public class AplicacionCliente extends JFrame{
public AplicacionCliente() {
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
PanelMenu panelmenu = new PanelMenu(); //PanelMenu extends JPanel and has my buttons
JButton bot = new JButton("Prueba");
bot.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("Botonazo!");
}});
contentPane.add(bot);
contentPane.add(panelmenu, BorderLayout.LINE_END);
}
}
答案 0 :(得分:0)
为什么要实现addActionListener
而不是addMouseListener
?
¿Porquéquieresimplementar addActionListener
en vez de addMouseListener
?
编辑:检查此代码,可能有效
public class AplicacionCliente extends JFrame implements MouseListener{
public AplicacionCliente() {
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
this.setVisible(true);
PanelMenu panelmenu = new PanelMenu(); //PanelMenu extends JPanel and has my buttons
JButton bot = new JButton("Prueba");
bot.addMouseListener(this);
bot.setName("bot");
contentPane.add(bot);
contentPane.add(panelmenu, BorderLayout.LINE_END);
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
if(((JButton)e.getSource()).getName().compareToIgnoreCase("bot")==0){
System.out.println("Botonazo!!");
}
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}