首页 > 编程语言 >Java笔记(9) GUI->Frame和Panel

Java笔记(9) GUI->Frame和Panel

时间:2023-04-05 17:44:35浏览次数:32  
标签:Java Color GUI public frame new Frame Panel

仅作为笔记

GUI继承体系图

GUI继承体系图

Frame创建

public class Test{
  public static void main(String[] args){
    //新建Frame
    Frame frame = new Frame("This is frame title");
    //设置可见性
    frame.setVisible(true);
    //设置窗口大小
    frame.setSize(400,400);
    //设置背景颜色
    //1. 自行指定rgb,从而创建颜色
    //2. 使用Color类的静态成员定义的预设方案
    //frame.setBackground(new Color(125,125,125));//通过执行rgb值创建颜色方案
    frame.setBackground(Color.lightgray);
    //设置窗口弹出的位置
    frame.setLocation(700,700);//指定窗口左上角坐标
    //设置大小固定,不可拉伸
    frame.setResizeable(false);

    //监听关闭事件
    frame.addwindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
        System.exit(0);
      }
    });
  }
}

至此,一个Frame就定义完成了:

自定义Frame

在需要定义多个Frame的场景中,单独定义每个Frame的效率将会非常低,因此可以通过继承Frame的方式,自定义创建Frame的方法:

public class MyPanel extends Frame{
  static int id = 0;//可能存在多个Frame,设置计数器
  public MyFrame() throws Headless Exception{super();}//无参构造器
  public MyFrame(String title) throws HeadlessException{};
  public MyFrame(int x, int y, int w, int h, Color color){
    super("Customized frame" + (++id));
      setBackground(color);
      setBounds(x,y,w,h);//≈setLocation()+setSize()
      setResizable(false);
      setVisible(true);
  }
}
================================================

public class Test02{
  public static void main(String[] args){
    Frame frame1 = new MyFrame(300,300,200,200,Color.lightGray);
    Frame frame2 = new MyFrame(500,300,200,200,Color.cyan);
  }
}

自定义Frame

Panel

实际上,Frame往往仅作为容器存在,想要绘制的窗口内容一般在Panel中实现。

public class TestPanel{
  public static void main(String[] args){
    MyFrame myFrame = new MyFrame(300,300,500,500,Color.green);
    myFrame.addWindowListener( new WindowAdapter(){
      public void windowClosing(WindowEvent e){ System.exit(0); }
    });
    myFrame.setLayout(null);      //设置Frame的布局
    Panel panel = new Panel();    //添加Panel
    panel.setBounds(50,50,200,200);  //Panel设置坐标,其坐标是与其所在的Frame的相对坐标
    panel.setBackground(Color.magenta); //设置Panel的背景
    myFrame.add(panel);    //将Panel添加到Frame
  }
}

Panel

标签:Java,Color,GUI,public,frame,new,Frame,Panel
From: https://www.cnblogs.com/hiibird/p/17289277.html

相关文章

  • java中如何灵活的比较日期大小
    java中如何灵活的比较日期时间大小 在比较两个日期时间的大小之前,我们先了解两个需要用到的类:Date和Calendar 1. Date类 java.util包提供了Date类来封装当前的日期和时间1publicstaticvoidmain(String[]args){2DatedNow=newDate();3......
  • java结构
    Java结构顺序结构1.JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。2.顺序结构是最简单的算法结构。3.语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。选择结构1......
  • JavaScript之函数,变量作用域,let(局部变量),const(常量)
    一.函数方法:面向对象特有的,它是对象的一部分,一个对象包含属性和方法函数:它的功能类似于方法,但是函数的写法是直接与类文件一体的,方法是包含在类文件中的,函数和类文件是一级目录JavaScript中的函数是包含在函数的定义方式一般用 function 来声明所有函数,他不同于其它高级语......
  • JavaWeb-response 下载文件-2023-04-05
    packagecom.feijian.servlet;importjavax.servlet.ServletException;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.......
  • 【Java 并发】【九】【AQS】【一】什么是AQS?为什么说它是JUC基础框架?
    1 前言这节我们来开始看AQS,这个东西可以说是搞Java的都知道的,本节会介绍一下AQS以及它提供的基本机制,后面再对AQS提供的每一个机制一个个深入的剖析。2  什么是AQS?(同步器基础框架)AQS叫做抽象队列同步器(AbstractQueuedSynchronizer),它是一个实现了同步器功能的基础框架,其......
  • java代码执行的过程
    java程序的运行必须经过三个阶段:编写、编译、运行编写:指在Java开发环境中进行程序代码的输入,最终形成后缀名为.java的Java源文件。编译:通过java编译器将java源文件(*.java)编译为java字节码文件(*.class)运行:通过java类加载器将java字节码加载到堆内存中,再通过java解释器将堆......
  • C++库封装JNI接口——实现java调用c++
    1.JNI原理概述通常为了更加灵活高效地实现计算逻辑,我们一般使用C/C++实现,编译为动态库,并为其设置C接口和C++接口。用C++实现的一个库其实是一个或多个类的简单编译链接产物。然后暴露其实现类构造方法和纯虚接口类。这样就可以通过多态调用到库内部的实现类及其成员方法。进一步......
  • Java Scanner的next和nextLine的区别
    一.next要读取到有效字符才能结束输入,否则会一直处于读取状态读取到有效字符前的空格,会自动清除只有读取到有效字符后,才会把之后的空格清除next不能读取带有空格的字符串空格不能输出只有读取到有效字符后才输出只能输出空格之前的字符二.nextLine1.以Enter为结束......
  • java——maven——分模块开发与设计
                注意:   参数说明:-DgroupId:项目组ID,通常为组织名或公司网址的反写。-DartifactId:项目名。-DarchetypeArtifactId:指定ArchetypeId,maven-archetype-quickstart用于快速创建一个简单的Maven项目。-DinteractiveMode:是......
  • Java基础
    注释1.单行注释//用于注释少量的代码或者对附近的代码进行说明2.多行注释/*/多用于注释多行代码3.文档注释/**/一般用于对类和方法进行说明vscode注释方法的快捷键:1.单行注释:选中区域Ctrl+/取消注释同样是这个快捷键2.多行注释:选中区域Alt+Shif......