2019独角兽企业重金招聘Python工程师标准>>>

通俗的讲jframe相当与桌子,而jpanel相当桌布,jbutton,jlabel等相当于杯子,碗筷等,杯子,碗筷虽然可以直接放到桌子上但不是很规范,应该放到桌布上才对。
以前我没有用jpanel来布局。直接就是jframe.add(jlabel1);然后就是jlabel1.setbound();这种做法不妥,虽然窗口可以正常显示,但是还是不规范,有事后会有点小问题,当组件更改的时候会有点问题,会有阴影(以前遇到过这种问题)。

正确的做法是
1.使用Container content=this.getContentPane();得到容器
2.实例化一个jpanel 例如JPanel  panel1=new   javax.swing.JPanel();
3.实例化组件比如JButton等
4.使用panel1.add()方法添加组件
5.定位比如说JButton1.setbound(0,0,23,34);注意这里的坐标是相对于其所在的容器panel1
6.使用例如content.add(panel,BorderLayout.CENTER);方法把“桌布”(panel1)放到“桌子”content上。(JFrame的默认布局是BorderLayout)

示例代码如下:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class NewClass extends JFrame {public NewClass() {init();}public void init() {// 实例化JPanel等一些组件JPanel pan1 = new JPanel();JButton jb1 = new JButton("one in pan1");JButton jb2 = new JButton("two in pan1");JButton jb3 = new JButton("one out panel");JButton jb4 = new JButton("two out panel");// setBound()坐标是相对于pan1而言的jb1.setBounds(0, 0, 100, 30);jb2.setBounds(0, 200, 100, 30);// 得到容器为什么不需要实例化?可能是因为每个窗口都有这个对象Container cont = getContentPane();// 将pan1添加到容器中cont.add(pan1, BorderLayout.CENTER);cont.add(jb4, BorderLayout.WEST);cont.add(jb3, BorderLayout.EAST);// 将组件添加到pan1中,并对pan1做一些初始化pan1.setLocation(70, 70);pan1.setLayout(null);//注意此处的nullpan1.add(jb1);pan1.add(jb2);pan1.setBackground(Color.ORANGE);this.setBounds(0, 0, 400, 400);this.setVisible(true);}public static void main(String arg[]) {NewClass test = new NewClass();}}

问题1:做窗口程序时候

Container cont=getContentPane();

cont.add(pan1,BorderLayout.CENTER);//如何定位pan1位置?如何把pan1放到指定的坐标?
答:可以使用pan1.setbound()方法,相应的要设置cont.setLayout(null);    注意JPanel的默认布局是FlowLayout
  如果没有设置cont.setLayout(null);系统会使用默认的布局管理器,那么pan1.setbound()就不会起作用,比如说上例cont没有设置布局管理器为空。
  容器包含关系JFrame  =>  Container  =>  JPanel  =>(各种组件)

转载于:https://my.oschina.net/u/2391658/blog/702631

JFrame中使用jpanel来布局相关推荐

  1. java jinternalpanel_java swing中JPanel的布局问题

    java swing中JPanel的布局问题 关注:92  答案:3  信息版本:手机版 电脑版 解决时间 2021-01-17 16:07 提问者侢遇噹姩揂 2021-01-17 09:36 我在f ...

  2. java jpanel 叠加_如何添加多个扩展JPanel到Java中的一个JFrame中?

    我想要两个不同类的两个图像来扩展JPanel并排. 我遇到的问题是两个JPanel应该放在JFrame中,但是当我做framename.add(panel)时,它会替换另一个,而不是并排添加其中的两个 ...

  3. java GUI开发中关于卡片式布局详细步骤讲解

    java GUI开发中关于卡片式布局详细步骤讲解 JFrame frame = new JFrame("调课");//首先要申明一个JFrame. JPanel p1 = new ...

  4. java settitle_关于java的JFrame中的setTitle()方法

    展开全部 java的JFrame中使用setTitle()方法设置窗体的标题: 下面是一个计算器的例子: import java.awt.BorderLayout; import java.awt.D ...

  5. java中的图形界面如何在JFrame中添加背景色及背景图片

    Java窗口是指JFrame或者Frame 其次,窗口背景颜色是指直接调用JFrame或者Frame的setBackground(Color color)方法设置后显示出来的颜色.其实,JFrame的 ...

  6. java jframe显示图片_java怎么在JFrame中显示动态图片

    java怎么在JFrame中显示动态图片 (2012-09-16 23:39:54) 标签: 杂谈 import java.awt.Graphics; import javax.swing.Image ...

  7. java 关闭jpanel_如何在Java中关闭Jpanel程序

    我正在制作一个Java游戏,我需要一些关于如何操作的建议.如何在Java中关闭Jpanel程序 目前我使用2个不同的.java文件来制作游戏.我有一个扩展JFrame的主程序,我调用扩展JPanel的 ...

  8. java 关闭jpanel_从JFrame [Java]关闭JPanel窗口

    所以,我想制作一个带有JPanel的菜单屏幕,我让它工作,但是当我按下"开始"按钮时,它没有关闭菜单窗口,它只是打开一个新窗口,我该怎么做,保持它在同一个窗口,没有关闭/打开菜单窗 ...

  9. QML中的定位器和布局

    QML中的定位器和布局 QML中的定位器和布局 手动定位 锚点 定位器 布局类型 QML中的定位器和布局 手动定位 通过设置项目的x,y属性,可以将它们放置在屏幕上的特定x,y坐标处.根据视觉坐标系规 ...

最新文章

  1. 中国大陆光伏中上游触底反弹 台湾省亦酝酿涨势
  2. 数据挖掘原理与算法:机器学习->{[sklearn. model_selection. train_test_split]、[h2o]、[网格搜索]、[numpy]、[plotly.express]}
  3. hexo部署在Github-Page流程
  4. 技术人员如何参与产品设计讨论:激活那一潭死水
  5. 家里“娘娘”发钱,臣不得不遵命呀
  6. springboot报错---@RunWith(SpringRunner.class)
  7. Lost Cows POJ - 2182(线段树)
  8. PHP将字符串首字母大小写转换
  9. python 与或非_“2020”假看完本文若不能让你学通“Python”,我将永远退出IT界!...
  10. 健康窈窕美女第一课 减肥vs早餐四个关键问题。
  11. js判断json对象中是否含有某个属性
  12. linux下gcc/g++命令
  13. patran如何看屈曲因子_如何真正有效地改善驼背?
  14. Keil 5安装教程
  15. uni-app项目的启动
  16. 生物与环境 —— 生命的力量
  17. Windows 10搭建SVN服务器
  18. C#中的Socket
  19. 电子设计PCB-Altium笔记
  20. 四年级计算机下册word教学设计,小学教学四年级教案下册计算机教案-20210723143637.docx-原创力文档...

热门文章

  1. Windows上配置SSHKey到GItHub
  2. 带你看明白class二进制文件!
  3. 【爬虫笔记】Scrapy爬虫技术文章网站
  4. 金融贷款逾期的模型构建4——模型调优
  5. 代码夹带是洪水猛兽吗?
  6. zynq网络时钟控制寄存器_【干货分享】ZYNQ开发基本流程
  7. json list格式_来来来,一文让你读懂Cocos Creator如何读写JSON文件
  8. c++ 异步下获取线程执行结果_【分享吧】C++11多线程库介绍
  9. 神策数据:游戏企业如何做产品 A/B 测试?三大案例一次搞懂
  10. 周五话分析 | 方法论难落地?来个量身定制版本吧(AARRR模型)