当前位置: 首页 > 知识库问答 >
问题:

J内部框架中的J巴顿不会触发动作接收器

燕正卿
2023-03-14

我想检查我的内部框架下的ActionListener是否在工作。但是实现ActionListener的内部类不会读取注册的按钮。有什么原因吗?

员工框架视图

public class EmployeeFrameView extends JInternalFrame
{
   JButton button;

   public EmployeeFrameView()
   {
    super("AddEmployee",true,true,true,true);
    addComponentsToPane(getContentPane());
    pack();
    setVisible(true);
    setLocation(xOffset,yOffset);
   }

   private void addComponentsToPane(final Container pane)
   {
    final JPanel content = new JPanel();
    panelEmployee = new JPanel();

    //Add to content and set layout
    content.setLayout(new BorderLayout());
    content.add(addComponentsToEmployeePanel(panelEmployee),BorderLayout.NORTH);

    //Adding ScrollPane to Container.
    final JScrollPane scrollPane = new JScrollPane(content, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    pane.add(scrollPane);
   }

   private JPanel addComponentsToEmployeePanel(JPanel panelEmployee)
   {
     panelEmployee.setLayout(grid);
     gbc.gridx = 0;
     gbc.gridy = 1;
     button = new JButton("Button");
     panelEmployee.add(button, gbc);
   }

   public void addAction(ActionListener l )
   {
    button.addActionListener(l);
   }
}

EmployeeFrameController

public class EmployeeFrameController 
{
EmployeeFrameView theView;

public EmployeeFrameController(EmployeeFrameView theView)
{
    this.theView = theView;

    this.theView.addAction(new addAction());
}

class addAction implements ActionListener
{
    @Override
    public void actionPerformed(ActionEvent e) 
    {
        System.out.println("Working");
    }

}

}

主要

public class Main
{
public static void main(String[] args)
{
   EmployeeFrameView employeeFrameView = new EmployeeFrameView();

   EmployeeFrameController employeeFrameController = new EmployeeFrameController(employeeFrameView);
}
}

共有1个答案

荣波
2023-03-14

我看不出你发布的代码有任何问题。可能你的问题出在代码中的某个地方,你没有包含在这里(我敢打赌,有些东西会打乱引用,因为你没有包含将按钮添加到屏幕中的编码。)。

 类似资料:
  • 我正在尝试构建一个基于按钮的动态应用程序,这些按钮从创建的面板内部切换JFrame的主面板(这是我的应用程序的顶部内容)。 这个问题更多的是设计问题,而不是开发问题。我不确定我的设计,但我会试着解释一下。 我有一个JFrame代表我的应用程序,其中包含一个JTabbedPane(和多个Tabs)。每个选项卡都包含一个默认的JPanel,在那个JPanel中,我调用一个正在呈现我的视图的控制器(我正

  • 我有一个扩展JDesktopPane的类,其中有一个JInternalFrame,我可以将其图标化,我非常喜欢这个,但是当我将其图标化时,它会转到屏幕的左侧底部。我想将其更改为屏幕的右侧顶部。有人对如何设置该位置有任何建议吗?

  • 可能重复: 在Play框架2.0中使用MySQL数据库所需的步骤 我试图在IntelliJ中运行Play 2.0 framework应用程序,但它给出了一个错误:未找到驱动程序:[com.mysql.jdbc.Driver]。但它在Eclipse中运行良好。 我在conf文件中看了很多次,但没有找到任何错误。 任何帮助都很感激。

  • 嗨,我在容器内创建了三个帧,每个帧都有三个按钮,执行最小值,最大值和关闭功能。令人惊讶的是,只有一帧在工作,其余三帧不起作用。你能不能整理一下。

  • *J

    *J一个Java程序动态分析工具。这个工具包是为两个主要的目的服务: 1.帮助收集Java程序动态执行数据 2.提供一个框架来快速简便地分析这些收集到的数据。

  • 我试图在JPanel上画一些简单的形状,但是有一些困难。如果这个问题似乎以前已经回答过,但其他答案似乎没有帮助,请原谅。 我遵循了一个简单的教程,并成功地在JFrame上绘制了一些基本形状,但是当我将代码如何移动到一个扩展JPel的新类中时,屏幕上什么也没有出现。 我尝试过设置首选大小,重新验证和重新绘画。我添加了对super.paint组件的调用,尽管当我直接绘制到JFrame时,这两个调用都不