【发布时间】:2018-12-27 14:48:25
【问题描述】:
我正在尝试在我认为的名为 btnNew 的 JButton 上放置一个动作监听器:
查看:
public class MyWindow6 extends JFrame
{
private JButton btnNew;
private static final long serialVersionUID = 6579944958990616196L;
public static void main(String[] args) throws UnsupportedLookAndFeelException
{
UIManager.setLookAndFeel(new NimbusLookAndFeel());
MyWindow6 myWindow = new MyWindow6();
myWindow.setVisible( true );
public MyWindow6()
{
super( "JMenu sample" );
btnNew = new JButton( new ImageIcon( "icons/save.png"));
this.setSize(1200,800);
this.setLocationRelativeTo( null );
this.setDefaultCloseOperation( DISPOSE_ON_CLOSE );
JPanel contentPane = (JPanel) this.getContentPane();
JScrollPane leftScrollPane = new JScrollPane( new JTree());
leftScrollPane.setPreferredSize( new Dimension(200, 0));
contentPane.add( leftScrollPane, BorderLayout.WEST);
JTable t = new JTable(DaoClef.createModel());
JScrollPane scrollPane = new JScrollPane(t);
t.setFillsViewportHeight(true);
add(scrollPane, BorderLayout.CENTER);
// toolbar
JToolBar jtb = new JToolBar();
btnNew.setToolTipText("Ajouter clef (CTRL + N");
jtb.add(btnNew);
contentPane.add(jtb, BorderLayout.NORTH);
}
public JButton getBtnNew() {
return btnNew;
}
public void setBtnNew(JButton btnNew) {
this.btnNew = btnNew;
}
}
}
控制器:
public class Controller2 {
private DaoClef dao;
private MyWindow6 view;
public Controller2(DaoClef d, MyWindow6 v) {
dao = d;
view = v;
}
public void initController() {
view.getBtnNew().addActionListener(e -> delete());
}
private void delete() {
System.out.println("hello");
}
}
我没有收到任何错误,只是 println 根本不起作用。
您知道为什么这不起作用吗? 控制器和视图似乎没有连接。
如果您有任何关于将 MVC 与 Swing 结合使用的建议,我会感到有些困惑,因为我不知道将我的听众放在哪里。
【问题讨论】:
-
“AddActionListener 在我的 JButton 上不起作用” 哪个按钮?在这种情况下,应该只有一个。让它与一个一起工作,两个或更多的答案可能很明显。更一般地说:为了尽快获得更好的帮助,edit 添加minimal reproducible example 或Short, Self Contained, Correct Example。
-
你好,我正在尝试一个:btnNew
-
发布 MCVE / SSCCE。
-
更好吗?对不起,我是新人
-
贴出的代码不是mcve。它甚至不编译,有与问题无关的代码(如
Dao)和根本不使用的Controller2。请仔细阅读提供的链接。
标签: java swing model-view-controller actionlistener