JAVA GUI重要知识点学习心得

简介: 本人最近学习javaGUI发现重要知识点和思想用的频率很高,把它们整理下来一起分享

本人最近学习javaGUI发现重要知识点和思想用的频率很高,把它们整理下来一起分享


1:JFrame窗口和JDialog窗口



   一班JFrame用作主窗口,JDialog用作弹出窗口(即对话框),但JFrame也可以用作弹出窗口并设置一些功能。下面就看一个这类窗口的基本构造方法:很多适用于窗体额方法其部件也很适用的。


import java.awt.*;
import javax.swing.*;
public class JFrame窗口  {
  public static void creatjframe(String title)
  {
    JFrame jf=new JFrame(title);                  //实例化一个JFrame对象
    Container container=jf.getContentPane();      //获取一个容器
    JLabel jl=new JLabel("这是第一个JFrame窗体",JLabel.CENTER);  //标签剧中
    //jl.setHorizontalAlignment(SwingConstants.CENTER);//居中对齐等价替换为上一行
    container.add(jl);                            //将标签添加到容器中
    container.setBackground(Color.yellow);        //背景颜色
                jf.setResizable(false);                       //不可拉伸
    jf.setVisible(true);                           //设置可见
    jf.setSize(400,300);                          //设置大小
                jf.setLocationRelativeTo(null);// 剧中放置,要在setsize后面放置
    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//窗体关闭方式
  }
  public static void main(String[] args)
  {
    creatjframe("创建一个JFrame窗体");
  }
}


这里做一些说明:


1):一般情况下不这样构造,而是采用构造类继承JFrame这样,再类中构造,例如:

                             

public class jframe extends JFrame{ 
                                             public jframe(){ this.****;this.***  }     
                                            public static void main(String[] args){new jframe();}     }

     

这样构造要方便很多,因为此类本身就是一个窗体的继承类,他拥有窗体的性质。可以使用this.setVisible(true);函数也可以直接用setvisible(true);有个小技巧就是使用函        数时候先点一个点会出来可以使用的函数附图如下



20171212232616953.png


2)窗体的背景颜色是有层次的并且会被遮挡,例如container设置额容器颜色会遮挡jframe的背景颜色,而JPanel的背景颜色会遮住container容器的背景颜色,JPanel添加子类器件,子器件的背景颜色会遮住JPanel的颜色。元件的层次与原件添加的位置有关(添加再哪里)。


3)居中设置为啥要再setsize后面?因为如果再setsize之前就设置剧中窗体没有大小就会默认一个点再屏幕中间,设置大小会以这个点向右下方扩散而不是以这个点为中心扩散。


2:元件



        1):JButton:+鼠标监听事件(这里的鼠标监听也可以写成类继承监听接口,添加监听。再类中重写actionperforded函数。个人喜好问题)


JButton bl=new JButton("弹出对话框");
     bl.setBounds(10,20, 100, 21);
     bl.setContentAreaFilled(false);//透明
    bl.setBorderPainted(false);
    bl.setFocusPainted(false); 
     bl.addActionListener(new ActionListener() {//建立监听事件
       public void actionPerformed(ActionEvent e)
       {  
         if(e.getsourse()==b1){****;}
       }
     });



监听的如果是按钮数组,则


for(;i<**;i++){if(e.getsourse()==b[i]){       //添加要监听的事件               }}


不仅仅按钮可以添加鼠标监听,文本框,复选框都可以添加鼠标监听事件。


2)其他元件


       

JPanel panel1 = new JPanel();//面板元件。可使用布局,可添加元件。本身可以作为一个容器也可以作为局部容器。常用于画图,详细可参考我的另一篇五子棋博客;
            JTextField jt1=new JTextField("8",10);//文本有数字‘8’的单行文本。可添加监听。
           JTextArea jt=new JTextArea(3,10);//创建文本区系数代表大小,纯文本多行区域
           JCheckBox jc2=new JCheckBox("2");//复选框

3)容器+鼠标点击事件


  常见有container容器,JPanel面板添加鼠标点击事件,点击的坐标可由int x=e.getX();获得,int y=e.getY();获得。可以在这个点添加你需要添加的事情,详情可以看我的那篇五子棋实现过程。


4)常见布局:setlayout(new 布局方式())


绝对布局:setlayout (null);

元件需要用setbounds(int,int,int,int)分别代表坐标和长宽。(setbounds=setsize(int,int)设置大小加setlocation(int,int)设置位置(单位像素。))绝对布局很少用。


边界布局:borderlayout(),分为east,west,north,south,center。五个方向,一班中间偏大,其他部位没有使用会自动被其他位置挤占,可以使用上中下三部分,也可以使用左中右三部分。经常使用此类布局。


流布局:floutlayout(int,int,int),默认剧中对齐,按排版满就换行,局部容器使用该布局较多。//第一个int表示排列方式,有0左,1中间,2右;


网格布局:gridlayout(int,int,int,int)网格布局设置特定数量,对于整齐对称密集排布比较好用。参数代表行列,左右上下间距。


还有高级布局管理器 box,girdbaglayout等。


5)添加背景图片,图标,


添加背景图片:


       

URL url=myimageicon.class.getResource("image/beimian.jpg");
       image=Toolkit.getDefaultToolkit().getImage(url);


或者


mageIcon imageicon=new ImageIcon(this.getClass().getResource("/image/beimian.jpg"));
         image=imageicon.getImage();


有一:使用JLabel,(详细代码百度很多)二使用JPanel的paintComponent方法,重写该函数在里面drawimage(image, 0, 0,getWidth(),getHeight(), this)填充,然后将添加的容器设置成透明就可以。


添加图标


imageicon/icon的方法
           ImageIcon imageicon=new ImageIcon(this.getClass().getResource("/image/beimian.jpg"));
            jbuttton.seticon(imageicon);


6)添加背景音乐:


public AudioClip music;//背景音乐
 URL url=Memorize.class.getResource("music/fade2.wav");//源
 {music=Applet.newAudioClip(url);}
music.play();开始


如果循环需要添加:


try {
   Thread.sleep(40);
  } catch (InterruptedException e1) {
   e1.printStackTrace();
  }
  music.loop();


此外,这种循环点击X音乐还会继续播放,需要设置一个关闭的监听时间。在主类中


implements actionlisterner。在重载函数中添加
addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e){
   System.exit(0);
   }
   });


目录
相关文章
|
2月前
|
Java 调度 开发者
Java线程池ExecutorService学习和使用
通过学习和使用Java中的 `ExecutorService`,可以显著提升并发编程的效率和代码的可维护性。合理配置线程池参数,结合实际应用场景,可以实现高效、可靠的并发处理。希望本文提供的示例和思路能够帮助开发者深入理解并应用 `ExecutorService`,实现更高效的并发程序。
42 10
|
2月前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
161 4
|
2月前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
41 4
|
2月前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
58 1
|
4月前
|
存储 设计模式 SQL
[Java]知识点
本文涵盖Java编程中的多个知识点,包括静态与动态代理、基本数据类型转换、设计模式、异常处理、类加载、序列化、ORM框架、IPv4地址分类、编译与解释等。文章详细介绍了每个知识点的原理和使用方法,并提供了相关示例和注意事项。
69 16
[Java]知识点
|
4月前
|
网络协议 Java 物联网
Java网络编程知识点
Java网络编程知识点
83 13
|
4月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
4月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
8月前
|
存储 算法 安全
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
110 0
|
10月前
|
Java 程序员
Java this关键字详解(3种用法),Java程序员面试必备的知识点
Java this关键字详解(3种用法),Java程序员面试必备的知识点

热门文章

最新文章