首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jframe总是在上面,但是在另一个JFrame下面?

在Java中,JFrame是一个顶级容器,用于创建图形用户界面(GUI)应用程序的窗口。默认情况下,每个JFrame都会在其他JFrame的上方显示,这是因为JFrame的默认层级是顶层。

然而,如果一个JFrame被设置为另一个JFrame的子窗口(子容器),那么它将显示在父窗口的下方。这是因为子窗口的层级低于父窗口。

要实现一个JFrame在另一个JFrame下面的效果,可以使用JFrame的setContentPane()方法将一个JPanel设置为其内容面板,然后将这个JFrame设置为另一个JFrame的子窗口。这样,子窗口将显示在父窗口的下方。

以下是一个示例代码:

代码语言:txt
复制
import javax.swing.*;

public class MainFrame extends JFrame {
    public MainFrame() {
        setTitle("父窗口");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        // 创建子窗口
        SubFrame subFrame = new SubFrame();
        // 将子窗口设置为父窗口的子容器
        setContentPane(subFrame);
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            MainFrame mainFrame = new MainFrame();
            mainFrame.setVisible(true);
        });
    }
}

class SubFrame extends JPanel {
    public SubFrame() {
        // 设置子窗口的样式和内容
        setOpaque(true);
        setBackground(Color.RED);
        JLabel label = new JLabel("子窗口");
        add(label);
    }
}

在这个例子中,创建了一个父窗口Mainframe和一个子窗口SubFrame。通过将SubFrame设置为MainFrame的子容器,子窗口将显示在父窗口的下方。

这是一个简单的示例,实际应用中可以根据需要进行更复杂的布局和设计。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JAVA学习中Swing部分JDialog对话框窗体的简单学习

java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame...javax.swing.JLabel; import javax.swing.WindowConstants; /**  * 1:JDialog窗体时Swing组件中的对话框,  * JDialog的功能就是是从一个窗体中弹出另一个窗体...,就像是在使用浏览器时弹出的确定对话框一样  *  * 2:JDialog窗体和JFrame窗体类似,在使用时也需要调用getContentPane()方法将  * 窗体转化为容器,然后在容器中设置窗体的特性...jf=new JFrame();//实例化JFrame对象         Container container=jf.getContentPane();//将窗体转化为容器         JButton...{     public void MyFrame(){         JFrame jf=new JFrame();//实例化一个JFrame对象         Container container

1.8K70

【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布中绘制的背景图像 ( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

一、键盘按键监听 - 要点分析 ---- 如果要为 Java AWT 界面编程的应用设置键盘按键监听 , 必须为 Frame / JFrame 窗口设置键盘监听 , 为组件设置是无效的 ; 下面是设置键盘监听的核心代码...绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ---- 在 【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame...MouseWheelListener | Canvas 中绘制图像并设置图像大小 ) 博客中 , 使用缩放背景图像的方式 , 实现缩放效果 , 并同时福袋鼠标指针拖拽效果 ; 本博客中实现的案例 , 在上面的基础上...窗口 JFrame frame = new JFrame("Large Canvas"); // 设置窗口关闭行为 点击右上角关闭按钮 关闭窗口并退出应用...frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建画布 LargeCanvas canvas = new

1.8K20
  • 《Java 2 图形设计卷Ⅱ- SWING》第2章 Swing的基本知识

    因此,应当总是使用JApplet和JFrame来实现Swing的小应用程序和应用程序。  ...幸运的是,Swing提供了一个机制,它迫使弹出式菜单是重量组件,这样,它们就不会在重量组件下面弹出来。...如果一个内部窗体与另一个内部窗体重叠,则下面的内部窗体的重量画布将会使上面的内部窗体的一部分变模糊,因为重量画布的层序比轻量内部窗体的层序高。  ...其效果是允许事件派发线程调用另一个线程中的任意一个代码块。  ...如果在另一个操作能够在另一个线程上执行之前必须从一个组件获取信息,则InvokeAndWait方法是很有用的。   例如,例2-14列出的小应用程序总是更新进度条的值而不管该新值是否与当前的值相同。

    2.5K20

    JAVA学习中Swing概述中的JFrame学习

    ,JDialog  *  *3:JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以将JFrame看作是承载这些  *Swing组件的容器  *  *4:读者大致应该有这样一个概念  *... * @author biexiansheng  *  */ /** 实例为简单学习JFrame */ public class JFrameTest extends JFrame{//定义一个类继承...JFrame类     public void CreateJFrame(String title){//定义一个CreateJFrame方法         JFrame jf=new JFrame...        JLabel jl=new JLabel("这是一个JLabel标签窗体");//实例化JLabel对象         //设置字体居中显示,下面两行代码功能一样         jl.setHorizontalAlignment...        container.add(jl);//将标签添加到容器中         container.setBackground(Color.RED);//设置容器的背景颜色         //下面设置窗体的一些格式

    1.6K90

    如何在Java中使用Table

    以下是如何使用数组在Java中创建表: JTable(Object[][] rowData, Object[] columnNames) 下面是一些示例代码,展示了如何用Java创建一个表并填充数据:...另一个值得关注的问题是,如果您在数据库对象中查询特定值,则必须将所有值复制到数组或向量中。 为了避免这些问题,您可以使用模型创建表格。 如何在Java中使用模型创建表 首先,了解如何处理表数据很重要。...下面的代码示例展示了如何在Java中使用表模型: import javax.swing.*; import javax.swing.table.*; import java.awt.*; class...TableUsingModel{ public static void main(String args[]){ JFrame frame = new JFrame();...下面是一些示例代码,说明如何在Java中设置表的列宽: TableColumnModel columnModel = table.getColumnModel(); columnModel.getColumn

    2.1K40

    Java进阶08 GUI

    图形的理解 看下面一个图片: ? KTurtle绘制。参看把你的孩子打造成为码农 可以看到,图中有一个房子,房子上有窗户和门,窗户上有条纹,门上有把手,此外图像外还有一只小乌龟。...frame = new JFrame("HelloWorld"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);...图形树 我们利用add()方法,将一个图形元素加入到另一个元素中。通过这样的组合,所有的图形元素构成一个树状数据结构,这棵树表示了图像元素之间的隶属关系(containment hierarchy)。...图形树 在程序中,我们首先创建了JFrame对象。JFrame是top-level container,也就是图形树的根。JFrame默认包含有Content Pane。...frame = new JFrame("HelloWorld"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    1.7K70

    Java-GUI 编程之 Swing

    相比之下,在 AWT 图形界面中,由于控制组件外观的对等类与具体平台相关 ,因此 AWT 组件总是具有与本地平台相同的外观 。...每个 Swing组件的UI代理的类名总是将该 Swing 组件类名的 J 去掉,然后在后面添加 UI 后缀 。 UI代理类通常是一个抽象基类 , 不同的 PLAF 会有不同的UI代理实现类 。...以 JButton 为例,其 UI 代理的继承层次下图: ​ ​ 如果需要改变程序的外观风格, 则可以使用如下代码: //容器: JFrame jf = new JFrame(); try {...JFrame 也被更新, JFrame 是一个特殊的容器 , JFrame 依然部分依赖于本地平台的图形组件 。...4.关闭JFrame窗口,也无需监听器,只需要调用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法即可,更简单。

    2.4K10

    Swing常用组件

    代码示例 下面是一个简单的JCheckBox的使用示例: import javax.swing.*; import java.awt.*; import java.awt.event.*; public...代码示例 下面是一个使用JRadioButton的示例代码: import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JLabel...下面是JList类中一些常用的成员方法: JList(Object[] listData): 创建一个JList对象,传入一个Object数组作为列表数据。...代码示例 下面是一个使用JList的示例代码: import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener...然后,我们创建了两个按钮,一个用于添加项目,另一个用于删除选定的项目。当点击添加按钮时,会弹出一个对话框,要求用户输入新项目的名称,并将其添加到列表中。当点击删除按钮时,会删除选定的项目。

    10710

    java swing项目桌面软件还是蛮香的,至少有了我自己的桌面软件|Java 开发实战

    下面就Jtable的使用,好好整理了一番,途中参考的文章我都会放在下面列出,读者可以自己参考**JTable结构梳理JTable=TableHeader+TableColumn顾名思义我们知道表格是由表头和表列组成的...但是JTable中如果想让表头显示仅仅将JTable加入Jpanel或者Jframe中是不行的,我这里提供两种方式实现1、分别将TableHeader和TableColumn加入控件中单独的显示,这种情况不常见...众多周知jtable中常用的两种构造函数一个是数组另一个是vector,这两种构造函数中都是采用了匿名内部类实现tablemodel,前者用的是AbstractTableModel,后者是DefaultTableModel...jtable数据的CURD在上面我们继承了AbstractTableModel,这里面有对数据的CURD操作if("增加".equals(command)){List data = getData...下面请随我一起看看源码吧:/** * Returns Object.class regardless of columnIndex.

    33310

    JAVA学习Swing章节标签JLabel中图标的使用

    ; import java.awt.Container; import java.awt.Graphics; import javax.swing.Icon; import javax.swing.JFrame...jf=new JFrame();//创建一个JFrame窗口 Container container=jf.getContentPane();//将窗口转换为容器 container.setBackground...第二直接从图片源创建图表 * 第三除了可以直接从图片源创建图表之外,还可以为这个图标添加简短的描述 * 第四利用位于计算机网络上的图像文件创建图标 */ import javax.swing.JFrame...{ public MyImageIcon(){ JFrame jf=new JFrame();//创建一个窗体 Container container=jf.getContentPane...//该方法的参数是imageButton.jpg,这个路径是相对于MyImageIcon类文件的 //所以可将imageButton.jpg图片放在和此类同一个文件夹下面

    1.9K60

    Java爱心代码_java怎么敲入代码

    现实生活被琐事充斥,仪式感总是被人遗忘,凑合的晚饭、乱丢的衣物、杂乱无章的生活让原本平淡的生活过得一潭死水,找不到生活的乐趣。...展示爱心前,可以先复制love链接在浏览器打开,就会有下面图片展示哦!...(不使用该链接就直接看下面Java代码) 链接:love.wazf.top/S94 童话《小王子》里狐狸对小王子说:“你最好在每天相同的时间来,比如你在下午四点钟来,那么从三点钟起,我就开始感到幸福...接下来是爱心代码及展示效果 代码展示: import javax.swing.*; import java.awt.*; public class heart extends JFrame {...this.setBackground(Color.BLACK); // 设置窗口关闭方式 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE

    9.9K20

    【错误记录】Java AWT 图形界面编程设置键盘事件没有响应 ( 设置键盘事件 | 键盘事件必须设置到 Frame JFrame 对象上 )

    一、报错信息 ---- 实现一个需求 , 按键 数字 按键 , 让 Canvas 画布中绘制的图像根据按下的数值进行缩放 ; 在 AWT 自定义 Canvas 组件中 , 添加按键事件 , 下面定义的...) ; 二、解决方案 ---- 鼠标事件 , 可以添加到具体的 Component 组件上 , 但是凡是涉及到 键盘 的事件 , 必须添加到顶级组件 , 也就是窗口组件上 , 如 : Frame / JFrame...否则就会出现上述情况 , 为 组件设置的 KeyAdapter / KeyListener 监听 , 根本不回调相应的回调函数 ; 将 KeyAdapter / KeyListener 监听器 设置到 JFrame...窗口上 , 此时在该应用中按下对应的按键 , 就会回调 keyPressed 函数 ; public void initKeyListener(JFrame frame) {...#addKeyListener(new KeyAdapter(){}) 设置的键盘按键监听 , 即可实现想要的功能 ; JFrame.addKeyListener(new KeyAdapter() {

    51720

    Gephi可视化(二)——Gephi Toolkit叫板Prefuse

    下面我们还是通过走代码的形式一探Gephi Toolkit 1.创建项目是必不可少的环节,值得一提的是,Gephi支持多工作空间,这个类似于Linux的多个工作区(即桌面)的机制(听说Win10也支持这种多桌面的效果了...and display JFrame frame = new JFrame("Test Preview"); frame.setLayout(new BorderLayout()); frame.setDefaultCloseOperation...(JFrame.EXIT_ON_CLOSE); frame.add(applet, BorderLayout.CENTER); frame.pack(); frame.setVisible(true)...;   所有需要的参数配置好后,将其添加到JFrame进行界面化展示。   ...看完Gephi Toolkit在构建图形、添加布局效果、展现图形的过程,还是忍不住拿来和Prefuse对比下,虽然有些类的名称不同,但是在处理手法上都有异曲同工之妙,下面简单列出几点相似: 1.Workspace

    1.5K100
    领券