图形用户界面编程基础知识2

本文介绍了Java图形用户界面编程中的JDialog对话框,包括模态对话框的创建和使用。接着讲解了中间容器,如JPanel、JSplitPane和JScrollPane,并提供了JScrollPane的滚动条策略。最后,概述了布局管理,如BorderLayout、FlowLayout和GridLayout,并给出相应布局管理器的构造方法和使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模块8 图形用户界面编程2

2.JDialog
1.最常用的构造方法:
JDialog(所属窗口,标题,模式)(真模态,假模态)
与JFrame一样,JDialog(对话框窗口)也是一种顶级容器,但不能作为独立的窗口容器使用,必须依附于某个窗口(通常是JFrame)。其实在应用程序中主要是使用模态对话框,模态对话框常用来给予用户简单的提示或选择。创建模态对话框常使用类(JOptionPlane),在类(JOptionPlane)中内部会自动创建一个JDialog并将自己添加到该对话框的内容窗口中。

2.JDialog运用举例:

   package com.java.top;

   import javax.swing.JDialog; 
   import javax.swing.JFrame;

      public class DemoJDialog {

            public static void main(String[] args) {
	            
	             //创建对话框
	             JDialog  d = new JDialog (r,"第一个窗口",true);
	             d.setSize(400, 300);
                 d.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
	             d.setVisible(true);
           }

       }

中间容器

主要包括:
面板容器类(JPanel类),分隔窗格(JSplitPane类,,使用较少),
带滚动条的窗格容器(JScrollPane类),工具栏(JToolBar类)等。

面板容器与顶层容器不同,它不能独立存在,必须被添加到其他容器内部。面板可以嵌套,从而设计出复杂的图形用户界面。

JPanel运用举例练习1:

  package com.java.middle;

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

      public class DemoJPanel1 {

            public static void main(String[] args) {
	
	//练习·1:新建类DemoJPanel1,创建p1,p2,p3三个面板,背景颜色分别为黄,绿,粉
   //        创建窗口f,标题为“面板展示”,将p1添加到f中,将p2添加到p1中,将p3添加到p2中
	
	         JPanel p1 = new JPanel();
	         JPanel p2 = new JPanel();
	         JPanel p3 = new JPanel();
      	     p1.setBackground(Color.yellow);
	         p2.setBackground(Color.green);
  	         p3.setBackground(Color.pink);
	
	        JFrame f = new JFrame("面板展示");
	        f.setSize(400, 300);//设置窗口大小(宽,高)    【】【】
	        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭按钮时退出程序  【】【】
	        f.setVisible(true);//显示窗口  【】【】
	
	        f.add(p1);
	        p1.add(p2);
	        p2.add(p3);
        }

   }

JPanel运用举例练习2:

   package com.java.middle;

   import javax.swing.JButton;
   import javax.swing.JFrame;
   import javax.swing.JLabel;
   import javax.swing.JPanel;
   import javax.swing.JTextField;

       public class DemoJPanel2 {

              public static void main(String[] args) {
	
                //练习2:新建类DemoJPanel2。创建一个JPanel面板p,一个JLabel标签l,一个LButton按钮  b,
                //	一个JTextField文本框t,一个窗口f。将面板添加到窗口中,标签,按钮,文本框均添加到面板中
      
	                    JPanel p = new JPanel();
	                    JLabel l = new JLabel("标签");
	                    JButton b = new JButton("按钮");
	                    JTextField t = new JTextField(10);
	                    JFrame f = new JFrame();
	
	                    f.add(p);
	                    p.add(l);
       	                p.add(b);
	                    p.add(t);
	
	                    f.setSize(400, 300);//设置窗口大小(宽,高)    【】【】
	                    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭按钮时退出程序  【】【】
	                    f.setVisible(true);//显示窗口  【】【】
	
            	}

           }

JScrollPane滚动面板(常用)
JScrollPane的一般用法是先将一些组件添加到一个JPane中,然后再把这个JPane添加到JScrollPane

常用的构造方法:空参构造

常用方法
(1)void setViewportView(Component view);添加组件
(2)void setHorizontalScrollBarPolicy(int policy);设置水平滚动条策略
(3)void setVerticalScrollBarPolicy(int policy);设置垂直滚动条策略

滚动策略常量
(1)根据需要自动显示(默认值)
VERTICAL_SCROLLBAR_AS_NEEDED
HORIZONTAL_SCROLLBAR_AS_NEEDED

(2)始终显示
VERTICAL_SCROLLBAR_ALWAYS
HORIZONTAL_SCROLLBAR_ALWAYS

(3)不显示
VERTICAL_SCROLLBAR_NEVER
HORIZONTAL_SCROLLBAR_NEVER

标签
JLabel();无参构造
JLabel(Icon image);构造一个显示图标的标签
JLabel(String text);构造一个显示文本的标签

按钮
JButton();无参构造
JButton(Icon icon);创建一个图标为icon的按钮对象
JButton(String text);创建一个文本信息为text的按钮对象

JScrollPane的运用举例练习:

   package com.java.middle;

   import javax.swing.JButton;
   import javax.swing.JFrame;
   import javax.swing.JPanel;
   import javax.swing.JScrollPane;

      public class TestJScrollPane {

          public static void main(String[] args) {
	
               //练习:三个按钮放在面板中,面板放在滚动条面板中,滚动条面板放在窗口中
	                 JPanel p = new JPanel();//面板
	                 JButton b1 = new JButton("按钮一");
                   	 JButton b2 = new JButton("按钮二");
	                 JButton b3 = new JButton("按钮三");
	                 JScrollPane s = new JScrollPane();
	                 JFrame f = new JFrame();//窗口
	                 
	                 p.add(b1);
	                 p.add(b2);
	                 p.add(b3);
	                 f.add(s);//滚动条面板添加到窗口中
	
	                 f.setSize(400, 300);//设置窗口大小(宽,高)    【】【】
	                 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭按钮时退出程序  【】【】
 	                 f.setVisible(true);//显示窗口  【】【】
	                 s.setViewportView(p);  //往滚动条面板中添加组件
	                 s.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
	                 s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
              }

           }

布局管理

每个容器(如顶层容器的内容窗格)都有一个默认的布局,管理器开发者可以通过容器的set layout()方法改变容器的布局管理器

常用布局

边界布局:BorderLayout
流式布局:FlowLayout
网格布局:GridLayout

容器设置布局

setLayout(布局类的对象)

如:f.setLayout(new FlowLayout())

1.BorderLayout布局管理器

BorderLayout是JFrame和JDialog两种容器的默认布局管理器。

BorderLayout类提供了两种的构造方法:

(1)BorderLayout();无参数的构造方法
(2)BorderLayout(int hgap,int vgap); 创建一个组件之间水平间距为hgap,垂直间距为 vgap的布局管理器对象

BorderLayout举例练习:

 package com.java.layout;

 import java.awt.BorderLayout;
 import java.awt.Color;
 import javax.swing.JFrame;
 import javax.swing.JPanel;

    public class DemoBorderLayout {

         public static void main(String[] args) {
	
             //新建类DemoBorderLayout
             //创建五个面板p1p2p3p4p5,用五种不同的颜色作为面板背景色。
             //创建一个400宽400高的窗口,(窗口采用边界布局),将五个面板分别添加到东南西北中五个区域

	                JFrame f = new JFrame();
	                JPanel p1 = new JPanel();
	                JPanel p2 = new JPanel();
	                JPanel p3 = new JPanel();
	                JPanel p4 = new JPanel();
	                JPanel p5 = new JPanel();
	
	                p1.setBackground(Color.blue);
	                p2.setBackground(Color.pink);
	                p3.setBackground(Color.gray );
	                p4.setBackground(Color.green);
	                p5.setBackground(Color.orange);
	
	                f.setSize(400, 400);//设置窗口大小(宽,高)    【】【】
	                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭按钮时退出程序  【】【】
	                f.setVisible(true);//显示窗口  【】【】
	
	                f.setLayout(new BorderLayout());
	
	                f.add(p1,BorderLayout.EAST);
	                f.add(p2,BorderLayout.SOUTH);
               	    f.add(p3,BorderLayout.WEST);
	                f.add(p4,BorderLayout.NORTH);
	                f.add(p5,BorderLayout.CENTER);
	

              }

           }

2.FlowLayout布局管理器

FlowLayout定义在java. awt包中,是JPanel容器的默认布局容器。它按照一行放满后就另起一行,默认居中。

FlowLayout类提供了三种的构造方法:

(1)FlowLayout();无参构造
(2)FlowLayout(int align);创建一个对齐方式为align的布局管理器对象.
align取值:LEFT, RIDHT, CENTER, FEADING, TRAILING
(3)FlowLayout(int align,int hgap,int vgap );创建一个对齐方式为align,水平间距为hgap像素,垂直间距为vgap像素的布局管理器对象

FlowLayout举例练习:

  package com.java.layout;

  import java.awt.FlowLayout;
  import javax.swing.JButton;
  import javax.swing.JFrame;

 public class DemoFlowLayout {

      public static void main(String[] args) {
	
          //新建类DemoFlowLayout
         //创建五个按钮(JButton)b1 b2b 3b4b5,创建一个400宽,400高的窗口,
          //窗口采用流式布局,将五个按钮添加到窗口中

	            JFrame f = new JFrame();
	            JButton b1 = new JButton("按钮一");
	            JButton b2 = new JButton("按钮二");
	            JButton b3 = new JButton("按钮三");
	            JButton b4 = new JButton("按钮四");
	            JButton b5 = new JButton("按钮五");
	
	            f.setSize(400, 400);//设置窗口大小(宽,高)    【】【】
	            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭按钮时退出程序  【】【】
	            f.setVisible(true);//显示窗口  【】【】
	
	            f.setLayout(new FlowLayout());
	            f.add(b1);
	            f.add(b2);
	            f.add(b3);
	            f.add(b4);
	            f.add(b5);

            }

      }

3.GridLayout布局管理器

如:f.setLayout(new GridLayout(行,列))

GridLayout类提供了三种的构造方法:

(1)GridLayout();无参构造
(2)GridLayout(int rows,int cols);创建一个 rows行, cols列的网格布局管理器对象, 组件之间没有间隙.
(3)GridLayout(int rows,int cols,int hgap,int vgap);创建一个 rows行, cols列的网格布局管理器对象, 组件之间的水平间距为hgap,垂直间距为vgap

GridLayout举例练习:

package com.java.layout;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

    public class DemoGridLayout {

        public static void main(String[] args) {
	
	       JFrame f = new JFrame();
 //		   JButton b1 = new JButton("按钮一");
 //		   JButton b2 = new JButton("按钮二");
 //		JButton b3 = new JButton("按钮三");
 //		JButton b4 = new JButton("按钮四");
 //		JButton b5 = new JButton("按钮五");
 //		JButton b6 = new JButton("按钮六");
 //		JButton b7 = new JButton("按钮七");
 //		JButton b8 = new JButton("按钮八");
 //		JButton b9 = new JButton("按钮九");
	
	
	      for(int i=1;i<10;i++) {
		       JButton p = new JButton("按钮"+i);
		          f.add(p);
	        }//代替已注释的代码
	
	
	       f.setLayout(new GridLayout(3,3));//创建表格三行三列
         //		f.add(b1);
         //		f.add(b2);
         //		f.add(b3);
         //		f.add(b4);
         //		f.add(b5);
         //		f.add(b6);
         //		f.add(b7);
         //		f.add(b8);
         //		f.add(b9);
	
	            f.setSize(400, 400);//设置窗口大小(宽,高)    【】【】
            	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点击关闭按钮时退出程序  【】【】
	            f.setVisible(true);//显示窗口  【】【】
           }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值