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

在不使用“this”命令的情况下选择 JFrame

云和同
2023-03-14

 public main() {
        initComponents();
 JPanel panel=new JPanel();
        panel.setBounds(0, 0, 100, 100);
        panel.setBackground(Jtrue);
        this.add(panel);
}

我可以使用此命令添加Jfram对象

然而,当我在一个单独的方法中编写这个时,我无法添加,因为“this”方法位于该对象内。

   public void created(){
        
        
        int degisken=1;
        JPanel panel=new JPanel();
        panel.setBounds(0, 0, 100, 100);
        panel.setBackground(Jtrue);
        this.add(panel);
       
      
      
    }
    

如何选择jframe而不是“this”

我不想创建新的jframe,因为已经有了

共有1个答案

巫晋鹏
2023-03-14

您应该以一种在整个类中都可见的方式创建JFrame实例。

您可以通过将 JFrame 声明为类的私有成员来实现此目的。然后,您将能够在所有类方法中访问它:

导入java.awt.颜色;导入java.awt.尺寸;

导入javax . swing . jframe;导入javax . swing . jpanel;

公共类JFrameDemo{私有JFrame框架;

public JFrameDemo() {
    this.frame=new JFrame("Demo #1");
    initComponents();
    created();
}

private void initComponents() {
    // Do your stuff here
}

public void created() {
    int degisken = 1;
    JPanel panel = new JPanel();
    panel.setBounds(0, 0, 100, 100);
    panel.setPreferredSize(new Dimension(640, 480));
    panel.setBackground(new Color(255, 128, 112));
    this.frame.getContentPane().add(panel);
    this.frame.pack();
    this.frame.setVisible(true);
}

public static void main(String[] args) {
    JFrameDemo frameDemo = new JFrameDemo();
}

}

另一个解决方案是你的类扩展JFrame。这样,您将使用 this 关键字访问 JFrame 实例,因为这是您的类,因此也是您的 JFrame:

import java.awt.Color;

导入Java . awt . dimension;

导入javax . swing . jframe;导入javax . swing . jpanel;

public class JFrameDemo2 扩展了 JFrame {

public JFrameDemo2() {
    super("Demo #2");
    initComponents();
    created();
}

private void initComponents() {
    // Do your stuff here
}

public void created() {
    int degisken = 1;
    JPanel panel = new JPanel();
    panel.setBounds(0, 0, 100, 100);
    panel.setPreferredSize(new Dimension(640, 480));
    panel.setBackground(new Color(255, 128, 112));
    this.getContentPane().add(panel);

}

public static void main(String[] args) {
    JFrameDemo2 frameDemo = new JFrameDemo2();
    frameDemo.pack();
    frameDemo.setVisible(true);
}

}

另一个评论:不要直接在 JFrame 上添加组件,而是在底层容器上添加组件:

yourFrameInstance.getContentPane().add(yourComponentInstance)
 类似资料:
  • 本文向大家介绍在什么情况下选择webpack?在什么情况下选择rollup?相关面试题,主要包含被问及在什么情况下选择webpack?在什么情况下选择rollup?时的应答技巧和注意事项,需要的朋友参考一下 非要一句话区分的话 如果是用,如果是用其实界限并不是特别明显。在某些特殊情况下可以互用

  • 有没有一种方法可以下载Docker映像/容器,例如,使用Firefox,而不使用内置的。 我被公司防火墙和代理屏蔽了,我无法通过它得到一个洞。 我的问题是我不能使用Docker获取图像,即Docker保存/拉取和其他Docker提供的功能,因为它被防火墙阻止了。

  • 本文向大家介绍Linux中在不破坏磁盘的情况下使用dd命令,包括了Linux中在不破坏磁盘的情况下使用dd命令的使用技巧和注意事项,需要的朋友参考一下 无论你试图从即将坏掉的存储驱动器抢救数据,将归档备份到远程存储,还是在别处对活动分区制作一份完美副本,都要知道如何安全可靠地复制驱动器和文件系统。幸好,有dd这款简单而强大的镜像复制工具,而且历史悠久。在这方面没有比它更出色的工具了。 dd命令的解

  • 问题内容: 因此,我有两个表格学生(PK sID)和导师(PK pID)。这个查询 提供这个结果 我正在尝试以此顺序获取不同的导师ID的列表,因此我正在寻找要生成的SQL 如果仅在SELECT子句中插入DISTINCT,我将得到意外的结果10、9、3(错误的顺序)。任何帮助,不胜感激。 问题答案:

  • 问题内容: 我需要在 不使用join命令的情况下加入 列表中的元素,因此例如,如果我有列表: 输出应为: 到目前为止,这是我的代码: 但是,最后,答案最终是错误的。 我认为逻辑还可以,但是我找不到问题? 问题答案: 如果您只想打印数字而不是实际数字:

  • 如果不使用JPQL/JPA中的本机查询选项,如何选择选择顶部的第一行?