Swing容器

凡是过去,皆为序章

标准对话框

  • 标准对话框是一个小窗口,用于询问问题、警告用户、或者提供简短而重要的信息。
  • 标准对话框主要分为四种:
    (1)确认对话框:询问问题,包含用于Yes,No和Cancel响应的按钮。
    (2)输入对话框:提示用户输入文本。
    (3)消息对话框:显示消息。
    (4)选项对话框:包含上面三种对话框。
  • 在使用这些对话框时,无需创建新的类来表示这些窗口,不用添加组件,也不用添加事件处理方法来接受输入。使用JOptionPane时,所有这些任务将会自动完成。

对话框使用方法

  • 最简单的使用方法是直接调用JOptionPane.show×××Dialog();
	JOptionPane.show×××Dialog (parentComponent, message, title, 
  	optionType, messageType, icon)
  	
  	可以只带几个参数。
  	其参数意义
  	(1)parentComponent:包含该对话框的容器,用于确认对话框显示在屏幕什么位置。
  	如果为null或指定的容器不为JFrame对象,对话框被显示在屏幕中间。
  	(2)message(Object类型):可以是字符串,组件或Icon对象。如果是一个字符串,其
  	中的文本将被显示在对话框中,如果是一个对象或Icon,则将显示该对象(而不是文本信
  	息)。
  	(3)title(String类型):将被显示在对话框标题栏的字符串。
  	(4)optionType(int):指出将显示哪些选项按钮,应为类变量:
  	YES_NO_CANCEL_OPTION或YES_NO_OPTION。
  	(5)messageType(int):一个描述对话框类型整数,值为类变量:ERROR_MESSAGE
  	INFORMATION_MESSAGE、PLAIN_MESSAGE、QUESTION_MESSAGE、WARNING_MESSAGE。
  	该参数决定了除消息外,对话框中还有哪种图标。
  	(6)icon():要置于对话框中的装饰性图标。图标的默认值由 messageType 参数确定。
返回值:
当其中一个 showXxxDialog 方法返回整数时,可能的值为: 
	YES_OPTION 、NO_OPTION 、CANCEL_OPTION 、OK_OPTION、CLOSED_OPTION 

实例

 JOptionPane.showConfirmDialog(null, "这是一个对话框", "这是标题", 
 JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
  

运行结果

选项对话框

最复杂的对话框是选项对话框,它融合其他所有对话框的特性为一体。

JOptionPane.showInternalOptionDialog(parentComponent, message, title,
 optionType, messageType, icon, options, initialValue)。
 当optionType不为YES_NO_OPTION或者YES_NO_CANCEL_OPTION时,最后两个选项
 使得我们可以自定制对话框。我们可以将标签,按钮,文本或不同组件的结合作为对象数组。
 
 options(Object[]数组:自定义组件取代YES_NO_CANCEL_OPTION等选项。
 initialValue(Object): 初始选项。

示例

import javax.swing.JButton;
import javax.swing.JOptionPane;

public class containerDemo {
    public static void main(String[] args) {
    	JButton btn[] = new JButton[3];
    	btn[0] = new JButton("male");
    	btn[1]= new JButton("female");
    	btn[2]=new JButton("mid");
JOptionPane.showOptionDialog(null, "对话框内容", "这是标题" , 0, JOptionPane.QUESTION_MESSAGE, null, btn, btn[0]);

    }
}

运行结果

滑块

  • 滑块是使用类JSlider来实现的,它让用户通过滑块控制来设置一个位于最大值和最小值之间的值。
  • 通过滑块(而不是文本)来获取数字输入,能够限制可输入的值。

方法概述

构造方法
JSlider() 
          创建一个范围在 0 到 100 之间并且初始值为 50 的水平滑块。 
JSlider(int orientation) 
          使用指定的方向创建一个滑块,范围在 0 到 100 之间并且初始值为 50。 
          方向可以是 SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。 
JSlider(int min, int max) 
          使用指定的最小值和最大值创建一个水平滑块,初始值等于最小值加上最大值的平均值。 
JSlider(int min, int max, int value) 
          用指定的最小值、最大值和初始值创建一个水平滑块。 
JSlider(int orientation, int min, int max, int value) 
          用指定的方向和指定的最小值、最大值以及初始值创建一个滑块。 
普通方法概述
public void setModel(BoundedRangeModel newModel)
		设置处理滑块三个基本属性(minimum、maximum、value)的 BoundedRangeModel。
public int getValue()从 BoundedRangeModel 
		返回滑块的当前值。
public void setValue(int n)
		将滑块的当前值设置为 n。
 void setPaintTicks(boolean b) 
          确定是否在滑块上绘制刻度标记。 
 void setPaintTrack(boolean b) 
          确定是否在滑块上绘制滑道。 
 void setSnapToTicks(boolean b) 
     指定为 true,则滑块(及其所表示的值)解析为最靠近用户放置滑块处的刻度标记的值。 
 void setMaximum(int maximum) 
          将滑块的最大值设置为 maximum。 
 void setMinimum(int minimum) 
          将滑块的最小值设置为 minimum。 
 void setMajorTickSpacing(int n) 
          此方法设置主刻度标记的间隔。 
 void setMinorTickSpacing(int n) 
          此方法设置次刻度标记的间隔。 

案例

import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.SwingConstants;

public class containerDemo {
    public static void main(String[] args) {
    	
            	  JFrame myFrame =new JFrame("滑块演示");
    	         myFrame.setSize(150, 150);
    	         
                 JSlider slider =new JSlider(SwingConstants.HORIZONTAL, 10, 50, 19);
               slider.setMajorTickSpacing(1);//次刻度间隔
               slider.setMajorTickSpacing(10);//主刻度间隔
                 slider.setPaintTicks(true);//显示刻度
                 slider.setPaintTrack(true);//显示滑道
                 slider.setPaintLabels(true);//显示数字标签
                
                 
                 myFrame.getContentPane().add(slider);
                 myFrame.setVisible(true);
               
    }
}

运行结果

工具栏(JToolBar)

  • 工具栏(JToolBar)是一个容器,能够将多个组件组织成一行或者一列。被组织的组件一般是按钮,菜单。
  • 工具栏所在的框架一般使用BorderLayout,将工具栏放置在North,剩下的分配给中间区域。
    方法
构造方法
JToolBar(String name, int orientation) 
          创建一个具有指定 name 和 orientation 的新工具栏。
 普通方法概述
   Component getComponentAtIndex(int i) 
          返回指定索引位置的组件。 
 int getComponentIndex(Component c) 
          返回指定组件的索引。 
 void addSeparator(Dimension size) 
          将指定大小的分隔符添加到工具栏的末尾。      

示例代码

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Panel;
import java.io.File;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;



public class containerDemo {
	private static int  arr_Size = 3;
    public static void main(String[] args) {
            	  JFrame myFrame =new JFrame();
            	  myFrame.setLayout(new BorderLayout());
            	  //工具栏
               JToolBar titleTool = new JToolBar("工具栏",SwingConstants.HORIZONTAL);
              JButton btn[] = new JButton[arr_Size];
             String name[] = new String[]{"File","Edit","Refactor"};
             ImageIcon icon[] =new ImageIcon[arr_Size];
                 
             for(int i=0;i<arr_Size;i++){
            	 icon[i] = new ImageIcon("image/"+(i+1)+".png");//图片的路径
            	 btn[i] = new JButton(icon[i]);
         
            	 titleTool.add(btn[i]);
             }
             myFrame.getContentPane().add(titleTool, "North"); 
             //中间界面
               JTextArea mainArea = new JTextArea(8,40);
               JScrollPane mainScroll =new JScrollPane(mainArea);
               myFrame.getContentPane().add(mainArea, "Center"); 
       
               myFrame.pack();
                myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 myFrame.setVisible(true);         
                 
    }
}

运行结果

扫描二维码关注公众号,回复: 4314765 查看本文章

菜单

  • 为了提高框架的可用性,方法之一是增加一个菜单栏,,菜单栏是一系列用于执行任务的下拉式菜单
  • 菜单需要三种组件的共同支撑:
    (1)JMenuItem:菜单中的一个菜单项
    (2)JMenu:一个下拉式菜单,包含一个或多个JMenuItem组件,其他界面组件和分隔符(位于菜单项之间的线段)。
    (3)JMenuBar:包含一个或多个JMenu组件并显示其名称的容器。
  • 使用步骤

代码演示

package MenuDemo;

import java.awt.BorderLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;

class MyFrame extends JFrame{
	  private static int ARR_SIZE = 3;
	  
	    public MyFrame(String title){
	    	 super(title);
	    	 setLayout(new BorderLayout());
	    	 
	    	 JPanel panel =new JPanel();
	    	 panel.setLayout(new BorderLayout());
	  //头部  	 
	    	 //菜单栏
	    	 JMenuBar mainMenu = new JMenuBar();
	    	 JMenu menu[] = new JMenu[ARR_SIZE]; 
	     //菜单栏每一项
	    	 String menuName [] = new String[]{"File","Edit","Refactor"};
	    	 //每一项中的下拉菜单
	    	 String menuItemName[][] =new String[][]{{"New","Open File","Close"},{"Undo Typing","Redo","Cut"},{"Rename","Move","Android"}};
	    	 for(int i=0;i<ARR_SIZE;i++){
	    		 menu[i] = new JMenu(menuName[i]);
	    		 mainMenu.add(menu[i]);
	    		 for(int j=0;j<menuItemName[i].length;j++){
	    			 menu[i].add(menuItemName[i][j]);
	    		 }
	    	 }
	    	 panel.add(mainMenu,"North");
	    	 
	    	//工具栏
	    	 JToolBar mainTool =new JToolBar("工具栏");
	    	 JButton []btnTool =new JButton[ARR_SIZE];
	    	 for(int i=0;i<ARR_SIZE;i++){
	    		 ImageIcon icon =new ImageIcon("image/"+(i+1)+".png");
	    		 btnTool[i] = new JButton(icon);
	    		 mainTool.add(btnTool[i]);
	    	 }
	    	 panel.add(mainTool, "South");
	    	 
	   getContentPane().add(panel, "North");
	
	  //中间 
	    	 //文本区域
	    	 JTextArea mainArea = new JTextArea(8,50);
	    	 JScrollPane mainScroll = new JScrollPane(mainArea);
	    	 getContentPane().add(mainScroll,"Center");
	    	
	    	
	    	 pack();
	    	 setVisible(true);
	    }
}
public class menuDemo {
	public static void main(String[] args) {
	        MyFrame  myFrame = new MyFrame("主界面");
	}
}

运行结果

进度条

进度条用于跟踪可用数字表示的任务进度,通常用于耗时较长的任务以显示在完成任务之前还需要等待多长时间。

方法概述

构造方法
JProgressBar(int orient, int min, int max)  
         orient - 所需的进度条方向:SwingConstants.VERTICAL ,SwingConstants.HORIZONTAL
      min - 进度条的最小值
      max - 进度条的最大值 
普通方法概述 
public int getValue()从 BoundedRangeModel 
		返回进度条的当前 value。
public void setValue(int n)
		将进度条的当前值设置为 n。
public void setStringPainted(boolean b)
		设置 stringPainted 属性的值,该属性确定进度条是否应该呈现进度字符串。
public double getPercentComplete()
		返回进度条的完成百分比。注意,此数介于 0.0 和 1.0 之间。
public int getOrientation()
	根据进度条的方向返回 SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。
public void setStringPainted(boolean b)
		设置 stringPainted 属性的值,该属性确定进度条是否应该呈现进度字符串。

实例

package JProgressBarDemo;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;

public class progressBarDemo {

	public static void main(String[] args) throws InterruptedException {
		  JFrame mainFrame =new JFrame();
		  mainFrame.setLayout(new BorderLayout());
		  JProgressBar pBarDemo = new JProgressBar(SwingConstants.HORIZONTAL,0,100);
		 pBarDemo.setStringPainted(true);
		 mainFrame.getContentPane().add(pBarDemo,"Center");
		 mainFrame.setVisible(true);
		 mainFrame.pack();
		 for(int i=0;i<100;i++){
			 Thread.sleep(1000);
			 pBarDemo.setValue(i);
			 System.out.println(pBarDemo.getPercentComplete());
		 }
		 
	}

}

运行结果

选项卡窗格(JTabbedPane)

  • 选项卡窗格(JTabbedPane)是一组堆叠在一起的面板,用户每次只能查看其中的一个。
  • 要查看其中的面板,用户必须单击包含其名称的标签,标签可跨越组件顶部或者底部水平排列,也可沿组件左边或者右边垂直排列。

方法概述

构造方法
public JTabbedPane(int tabPlacement, int tabLayoutPolicy)
		创建一个空的 TabbedPane,使其具有指定的选项卡布局和选项卡布局策略。
		tabPlacement - 关于内容的选项卡布局
		tabLayoutPolicy - 当在一次运行中不能放入所有的选项卡时,放置选项卡的策略
		布局可以是以下几种之一:JTabbedPane.TOP、JTabbedPane.BOTTOM、
		JTabbedPane.LEFT 或 JTabbedPane.RIGHT。
		布局策略可以是以下两种之一:JTabbedPane.WRAP_TAB_LAYOUT 或 
		JTabbedPane.SCROLL_TAB_LAYOUT。 
普通方法概述
public void addTab(String title, Component component)
		添加一个由 title 表示,且没有图标的 component。
public void removeTabAt(int index)
		移除 index 位置的选项卡。
public int getTabCount()
		返回此 tabbedpane 的选项卡数。 
public String getTitleAt(int index)
		返回 index 位置的选项卡标题。 

实例

package JProgressBarDemo;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;

public class progressBarDemo {

	public static void main(String[] args) throws InterruptedException {
		  JFrame mainFrame =new JFrame();
		  mainFrame.setLayout(new BorderLayout()); 
		  JTabbedPane tPaneDemo = new JTabbedPane(JTabbedPane.TOP,JTabbedPane.SCROLL_TAB_LAYOUT);
		  JPanel panel []=new JPanel[5];
		  for(int i=0;i<5;i++){
			  panel[i] = new JPanel();
			  tPaneDemo.addTab("面板"+i, panel[i]);
		  }
		  mainFrame.getContentPane().add(tPaneDemo);
		 mainFrame.setVisible(true);
		 mainFrame.pack();
	}

}

运行结果

猜你喜欢

转载自blog.csdn.net/kuangpeng1956/article/details/83790979