JFrame图解结构

有一窗口框架实例:JFrame win = new JFrame("窗口");
在new JFrame()时,构建了JFrame实例对象,在实例中的Layered Pane层面版中,也默认构建了一个JPanel控件面板。

使用 win.getContentPane( ); 是获取JFrame实例win中默认构建的 JPanel控件面板,获取到后可以往里布置 功能控件(如JButton)。

写一个JPanel控件面板实例:JPanel panel = new JPanel( );

使用 win.setContentPane(panel); 是把 win 中的默认 JPanel控件面板 替换为自定义的 JPanel控制面板 panel。

使用 win.add(panel); 则是在 win 中的默认 JPanel控件面板上叠加布置了--自定义的JPanel控件面板panel,(JPanel是可以嵌套的)。

【总结】
使用JFrame窗体时:
1.可以通过JFrame.getContentPane( )获取 JFrame窗体实例 默认构建的JPanel控件面板,然后往上布置功能控件。
2.可以通过JFrame.setContentPane(JPanel实例) 将 JFrame窗体实例 默认的 JPanel控件面板 替换成 自定义的JPanel控件面板。
3.可以通过JFrame.add(JPanel实例) 在 JFrame窗体实例 默认的 JPanel控件面板之上 叠加布置上自定义的JPanel控件面板。

【常见问题解决】
1.使用JFrame.setBackground(Color.pink)后无效果:
此时是对窗体的背景颜色设置,而窗体之上还有一个默认构建的JPanel是不透明白色,所以看不到给JFrame设置的颜色。
解决1:通过JFrame.getContentPane().setBackground(null);把JFrame默认构建的JPanel的颜色设置为null,那么窗体的背景颜色就显示出来了。
解决2:通过JFrame.getContentPane().setOpaque(false);把JFrame默认构建的JPanel的不透明度设置为false纯透明,那么窗体的背景颜色就显示出来了。
解决3:直接通过JFrame.getContentPane().setBackground(xxx)将JFrame默认JPanel设置颜色,功能控件布置到它上面就行了,窗体颜色不用设置。
解决4:自定义JPanel设置它的背景颜色,通过JFrame.setContentPane(JPanel实例)将自定义JPanel设置为JFrame的默认JPanel。
解决5:自定义JPanel设置它的背景颜色,通过JFrame.add(JPanel实例)将自定义JPanel叠加布置到JFrame的默认JPanel上面。

JFrame的面板结构和JPanel的使用的更多相关文章

  1. Java知多少(83)面板基础:JPanel和JScrollPane

    面板有两种,一种是普通面板(JPanel),另一种是滚动面板(JScrollPane). JPanel 面板是一种通用容器,JPanel的作用是实现界面的层次结构,在它上面放入一些组件,也可以在上面绘 ...

  2. 【Java GUI】Java面板基础:JPanel

    有两个面板,常见的面板(JPanel)和滚动面板(JScrollPane) Jpanel 面板是一种常见的容器,JPanel的作用是实现接口层次结构,面放入一些组件.也能够在上面绘画,将放有组件和有画 ...

  3. JFrame上添加、删除Jpanel后动态显示界面问题

    JFrame中动态添加或者删除JPanel后总是不正确显示需要的界面问题: 1.删除panel后还是显示之前的界面,新删除的panel在界面上并没有被删除: 2.删除panel1后添加新的panel2 ...

  4. 面板 JPanel,滚动面板 JScrollPane,文本域JTextArea

    容器中可以有多个JPanel面板,一个JPanel面板中可以有多个控件. 滚动面板 JScrollPane中只能有一个控件.       public class Demo extends JFram ...

  5. JPanel设置图片

    package com.gr.db; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class We ...

  6. java面板

    import java.awt.Color; import java.awt.Container; import javax.swing.JFrame; import javax.swing.JLab ...

  7. JFrame编程

    最基础的窗口 public test1() { setTitle("test1"); setSize(300,300); //设置窗口大小 setLocation(300,300) ...

  8. JFrame 文本打印

    package tools; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import jav ...

  9. Java-Swing的JFrame的一些插件使用详解

    JFrame介绍: 在 JFrame 对象中可以使用add方法添加 AWT 或者 Swing 组件. JFrame 有一个 Content Pane,窗口能显示的所有组件都是添加在这个 Content ...

随机推荐

  1. java内部类 2.19

    1.定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( ); //外部类HelloWorld publi ...

  2. jq插件和jq

    封装一个jq (function(win) { var jQuery = function(selecter) { this.version = '1.0.1'; //版本号 this.selecte ...

  3. MQ的调用

    mq调用(相关dll) using RabbitMQ.Client; using RabbitMQ.Client.Events; using System; using System.Collecti ...

  4. J - Worker

    Avin meets a rich customer today. He will earn 1 million dollars if he can solve a hard problem. The ...

  5. BBS那些事儿

    目录 1 注册 2 登陆 3 图片验证码相关 4 首页相关,Django Admin后台录入数据 5 注销功能 6 修改密码 7 用户头像展示,media配置 8 个人站点,个人侧边栏 9 侧边栏筛选 ...

  6. Android明密文切换

    前言: 在我们的登录界面经常会遇到查看自己输入密码是否正确,就会用到明密文切换 正文: 我们先写出xml文件文件中的代码,不用过多解释 <EditText android:layout_widt ...

  7. 实验吧-密码学-变异凯撒(ascii码规律运算)

    密文是:afZ_r9VYfScOeO_UL^RWUc 刚开始很迷,不知道往什么方向,到最后才发现,原来和ASCII有关. 将flag{的ASCII码和密文的ASCII码对比: 97 102 90 95 ...

  8. POJ 3615 Cow Hurdles(最短路径flyod)

    Cow Hurdles Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9337   Accepted: 4058 Descr ...

  9. Promise 与 await 组合使用

    看例子就行了,废话不多说!   async function checkStatus(name){   return new Promise((resolve,reject) => {      ...

  10. h5页面列表滚动加载数据

    h5列表滚动加载数据很常见,以下分享下今天做的案例: 前言 这个效果实现需要知道三个参数 1. scrollTop -- 滚动条距离顶部的高度 2. scrollHeight -- 当前页面的总高度( ...