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

将帧作为方法中的参数传递

罗鸿畴
2023-03-14

我想在方法中传递一个JFrame作为参数,可以吗?

这里是我想要的:

private void mouseClickedButtonsActions(JLabel l, Class c){
    l.addMouseListener(new java.awt.event.MouseAdapter() {
        @Override
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            c ma = new c();
            ma.setVisible(true);
            setVisible(false);
        }
    });
}

共有2个答案

从开济
2023-03-14
c ma = new c();

首先,类名应:

  1. 以大写字符开头
  2. 描述

我想在方法中传递一个JFrame作为参数,可以吗?

不需要将帧作为参数传递,您可以使用以下代码访问当前帧:

Component component = (Component)evt.getSource();
Window window = SwingUtilities.windowForComponent( component );
window.setVisible( false );
唐睿
2023-03-14

在这种情况下,您不应该发送类,如果您想了解更多关于将类作为参数发送的信息,请检查这个将类作为参数传递的选项。

现在,由于您希望将JFrame作为参数传递,您只需编写methodName(JFrame-frame),否则,如果您只想创建新的JFrame,则无需传递它,只需在方法内创建一个新的JFrame即可:

myMethod(){
   JFrame frame = new JFrame();
   // Do something with it
}

所以,正如您所看到的,不需要在other中传递类来生成该类的对象。

在这里,您可以看到如何将JFrame作为参数传递并创建新JFrame的示例:

public void jframe() {

    JFrame frame = new JFrame("Frame 1");
    JButton btn = new JButton("Click Me");
    ActionListener al = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            jframeAsParam(new JLabel("You added label to old JFrame"), frame);
            //makeNewJFrame(new JLabel("You opened new JFrame"));
        }
    };
    btn.addActionListener(al);
    JPanel panel = new JPanel(new GridLayout(2, 1));

    panel.add(btn);
    frame.setContentPane(panel);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300, 250);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

public void jframeAsParam(JLabel lbl, JFrame frame) {
    frame.getContentPane().add(lbl);
    frame.setVisible(true);
}

public void makeNewJFrame(JLabel lbl) {
    JFrame frame = new JFrame("Frame 2");
    JPanel panel = new JPanel(new BorderLayout());
    panel.add(lbl, BorderLayout.CENTER);
    frame.setContentPane(panel);    
    frame.setSize(300, 250);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

取消注释makeNewJFrame(new JLabel(你打开了新的JFrame));以查看打开新JFrame的工作原理

 类似资料:
  • 我正在编写一个方法,如果我想将一个类传递给一个方法,其中代码的一部分包括检查对象是否属于某种类型。这就是我想要的(但显然不行): 关于如何做到这一点有什么提示吗?谢谢!

  • 我有两种几乎相似的方法: 我想写一个通用函数,如下所示: 因此,我想让这样的东西发挥作用: 实际上,我找不到如何传递和作为参数。有什么建议吗?

  • 我有静态方法在我的类 这就是定义 这里用的是 这是我得到的一个错误 E0167类型为“void(TV_DepthCamAgent::)(int count,int copied_file)”的参数与类型为“void()(int,int)”的参数不兼容 错误C3867“TV_DepthCamAgent::progress_callback”:非标准语法;使用' 我做错了什么?

  • 问题内容: 码: 当我尝试: 我在Eclipse中收到错误。 但当: 一切都好。为什么会有这种差异?谢谢。 问题答案: 因为语法是特殊的语法糖,仅在初始化数组变量时才适用。这是因为任务本身缺少类型信息;但是在赋值的特殊情况下,类型是从变量中完全推断出来的。 在第一个示例中,编译器知道您要分配给它(是),因此允许使用此语法。在后者中,您无需初始化变量(并且由于Java类型推断的弱点,它甚至也无法完全

  • 问题内容: 我试图将选择的A类“获取”方法传递给B类中的方法。我已经将Java PassMethod作为Parameter签出,但是我无法以合理的方式采用接口方法解决问题。我宁愿 不 使用Java 8(lambdas),并尽可能避免反射。我的感觉是,我以错误的方式看待自己的问题。这是我要完成的工作的特定简化示例: 我有一个包含一些字段和get-method的类: 接下来,我将主类实例化为Map的V

  • 问题内容: 我有一个由一列值组成的数据框,我想将其作为参数传递来执行以下sql查询: 因此,我尝试了许多其他事情: 传递数据帧值的正确方法是什么? 注意:我使用的是Microsoft SQL Server,因此查询格式需要与我一样。 问题答案: 这能满足您的需求吗? 然后,您应该能够查询而无需更多参数。