Java基础——GUI——Swing中常用容器和组件

1.swing中常用容器

Java基础——GUI——Swing中常用容器和组件_第1张图片            Java基础——GUI——Swing中常用容器和组件_第2张图片           Java基础——GUI——Swing中常用容器和组件_第3张图片

(1)JFrame

常用方法:

  • 1.构造方法:
  • 2.设置窗体可见:
  • 3.设置点击窗体的执行的操作:.
  • 4.设置窗体的大小和位置
    •    等价于上面两个方法
    • 不管窗体多大,窗体运行起来都会出现在屏幕的中心
  • 5.获取窗体容器:
    • 在容器中添加和删除组件:
    • 做完添加和删除之后最好刷新容器:
  • 6.设置窗体是否可以改变大小:
  • 7.设置窗体标题:
  • 8.获取窗体的横纵坐标
    • 横坐标:
    • 纵坐标:

注意:在实际使用JFrame的时候,都是用自定义类来继承JFrame,然后在自定义类的构造方法中对窗体进行初始化

(2)JDialog

常用方法与上面类似

示例代码:保证弹出对话框后阻塞父窗体

package Demo01;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Demo extends JDialog{
    public Demo(JFrame frame) {
        /*
         *第一个参数:父窗体对象
         *第二个参数:对话框标题
         * 第三个参数:是否阻塞父窗体
         */
        super(frame,"对话框",true);
        //获取对话框窗体容器
        Container c = getContentPane();
        //添加一个对话框
        c.add(new JLabel("这是一个对话框"));
        //设置对话框窗体的坐标和大小
        setBounds(100,100,100,100);

    }

    public static void main(String[] args) {
        //创建一个窗体
        JFrame f = new JFrame("父窗体");
        //设置窗体的坐标和大小
        f.setBounds(50,50,300,300);
        //获取窗体f的容器
        Container c = f.getContentPane();
        //创建一个按钮
        JButton btn = new JButton("弹出对话框");
        //使用流布局设置布局
        c.setLayout(new FlowLayout());
        //将按钮添加到窗体中
        c.add(btn);
        //设置窗体可见
        f.setVisible(true);
        //设置窗体点击x号关闭程序
        f.setDefaultCloseOperation(EXIT_ON_CLOSE);
        //对按钮添加监听事件
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Demo dialog = new Demo(f);
                dialog.setVisible(true);
            }
        });
    }
}

Java基础——GUI——Swing中常用容器和组件_第4张图片

2.Swing中常用组件

                                

              

              

Java基础——GUI——Swing中常用容器和组件_第5张图片                                       Java基础——GUI——Swing中常用容器和组件_第6张图片

Java基础——GUI——Swing中常用容器和组件_第7张图片                                                                     Java基础——GUI——Swing中常用容器和组件_第8张图片

(1)JLabel

作用:在窗体上添加文字或图片

常用方法:

  • Java基础——GUI——Swing中常用容器和组件_第9张图片
  • Java基础——GUI——Swing中常用容器和组件_第10张图片
  • Java基础——GUI——Swing中常用容器和组件_第11张图片
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class MyJFrame extends JFrame {
	//创建标签的引用
	private JLabel label01;
	private JLabel label02;
	
	//在构造界面的时候就进行初始化界面
	public MyJFrame() {
		init();
	}
	//初始化界面
	private void init()
	{
		//设置窗体
		this.setSize(600,400);//设置窗体大小
		this.setLocationRelativeTo(null);//设置窗体居中显示
		this.setTitle("JLabel组件");//设置窗体标题
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置点击窗体x号时退出程序
		
		Container container=this.getContentPane();
		container.setLayout(null);
		
		label01 = new JLabel("你好");
		label01.setSize(200,100);
		label01.setLocation(0,0);
		//字体的大小:以磅作为单位
		//setFont是很多组件都有的
		label01.setFont(new Font("微软雅黑", Font.BOLD, 40));  
		
		
		label02 = new JLabel();
		label02.setSize(300,300);
		label02.setLocation(220,0);
		//在标签中添加图片
		//图片本身的像素大小 > 标签的大小:只显示图片的一部分
		//在实际开发中,我们会首先设计好界面,然后然后确定好图片的大小,用制图软件去改变图片的像素大小
		label02.setIcon(new ImageIcon("前进.png"));
		
		//为鼠标进入标签区域变换形状
		//Cursor类表示鼠标的各种形状,可以通过Cursor类的静态属性当作参数指定形状
		label02.setCursor(new Cursor(Cursor.HAND_CURSOR));
		
		//为标签添加tip提示框:即鼠标放在标签上,就会显示提示框
		label02.setToolTipText("这是一个Tip");
		
		container.add(label01);
		container.add(label02);
	}
	
	public static void main(String[] args) {
		MyJFrame frame =new MyJFrame();
		frame.setVisible(true);
	}
}

Java基础——GUI——Swing中常用容器和组件_第12张图片

(2)文本框JTextField和密码框JPasswordField

作用:输入单行文本或密码

常用方法:

  • Java基础——GUI——Swing中常用容器和组件_第13张图片
  • Java基础——GUI——Swing中常用容器和组件_第14张图片
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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


public class MyJFrame extends JFrame {
	//创建标签的引用
	private JLabel userName_Label;
	private JLabel password_Label;
	private JTextField userName_TextField;
	private JPasswordField passwordField;
	private JButton login_Button;
	private JButton cancel_Button;
 	
	//在构造界面的时候就进行初始化界面
	public MyJFrame() {
		init();
	}
	//初始化界面
	private void init()
	{
		//设置窗体
		this.setSize(600,400);//设置窗体大小
		this.setLocationRelativeTo(null);//设置窗体居中显示
		this.setTitle("JLabel组件");//设置窗体标题
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置点击窗体x号时退出程序
		
		Container container=this.getContentPane();
		container.setLayout(null);
		
		//对6个组件进行实例化
		userName_Label = new JLabel("用户名");
		password_Label = new JLabel("密码");
		userName_TextField = new JTextField();
		passwordField = new JPasswordField();
		login_Button = new JButton("登录");
		cancel_Button = new JButton("取消");
		
		//设置用户名标签的大小、位置、字体
		userName_Label.setSize(70,40);
		userName_Label.setLocation(100,60);
		userName_Label.setFont(new Font("微软雅黑",Font.PLAIN,20));
		
		//设置密码标签的大小、位置、字体
		password_Label.setSize(70,40);
		password_Label.setLocation(100,160);
		password_Label.setFont(new Font("微软雅黑",Font.PLAIN,20));
		
		//设置用户名输入框的大小、位置
		userName_TextField.setSize(300,40);
		userName_TextField.setLocation(200,60);
		
		//设置文本输入框中的限制字符的个数,该方法对null布局不起作用
		//只能输入5个字符(在非null布局下),但是每个字符的宽度不一样,该方法,以字符m为标准限制字符个数
		userName_TextField.setColumns(5); 
		
		//实现在用户名输入框中按下回车键时,光标切换到密码输入框中
		userName_TextField.addActionListener(new ActionListener() {  //文本框中使用频率最高的事件是按下回车键
			
			@Override
			public void actionPerformed(ActionEvent e) {
				//将光标切换到密码框当中
				passwordField.requestFocus();
			}
		});
		
		
		//设置密码输入框的大小、位置
		passwordField.setSize(300,40);
		passwordField.setLocation(200,160);
		//设置密码输入框中的回显字符,即在密码框中显示的字符
		passwordField.setEchoChar('*');
		//实现在密码输入框中按下回车后直接登录
		passwordField.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				login_Button.doClick();  //点击按钮
			}
		});
		
		//设置登录按钮的大小和位置
		login_Button.setSize(150,40);
		login_Button.setLocation(130,240);
		login_Button.setFont(new Font("微软雅黑",Font.PLAIN,20));
		
		//模拟登录
		login_Button.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				String userName = userName_TextField.getText();
				String password = new String(passwordField.getPassword());
				
				System.out.println("用户名:"+userName);
				System.out.println("密码:"+password);
				System.out.println("登录中。。。");
			}
		});
		
		//设置取消按钮的大小和位置
		cancel_Button.setSize(150,40);
		cancel_Button.setLocation(320,240);
		cancel_Button.setFont(new Font("微软雅黑",Font.PLAIN,20));
		
		//将6个组件添加到界面容器当中
		container.add(userName_Label);
		container.add(password_Label);
		container.add(passwordField);
		container.add(userName_TextField);
		container.add(login_Button);
		container.add(cancel_Button);
	}
	
	public static void main(String[] args) {
		MyJFrame frame =new MyJFrame();
		frame.setVisible(true);
	}
}

Java基础——GUI——Swing中常用容器和组件_第15张图片

(3)文本区JTextArea

(4)复选框JCheckBox

复选框和按钮有一个共同的祖先:AbstractButton

  • Java基础——GUI——Swing中常用容器和组件_第16张图片
  • Java基础——GUI——Swing中常用容器和组件_第17张图片

常用方法:

  • Java基础——GUI——Swing中常用容器和组件_第18张图片
  • Java基础——GUI——Swing中常用容器和组件_第19张图片
  • Java基础——GUI——Swing中常用容器和组件_第20张图片

复选框本身就是一个按钮,只要点在按钮区域点击哪里都是一样的,都会被选中

import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class MyJFrame extends JFrame {
	//作用一:检查框
	private JCheckBox confirm_CheckBox;
	private JButton next_Button;
 	
	//作用二:
	private String[] city_names;
	private JCheckBox[] cities_CheckBoxs;
	private JButton ok_Button;
	private JLabel cities_Label;
	
	
	//在构造界面的时候就进行初始化界面
	public MyJFrame() {
		init();
	}
	//初始化界面
	private void init()
	{
		//设置窗体
		this.setSize(600,400);//设置窗体大小
		this.setLocationRelativeTo(null);//设置窗体居中显示
		this.setTitle("复选框演示");//设置窗体标题
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置点击窗体x号时退出程序
		
		Container container=this.getContentPane();
		container.setLayout(null);
		
		//对组件进行实例化
		confirm_CheckBox = new JCheckBox("我已经阅读并接受条款");
		next_Button = new JButton("下一步");
		
		cities_Label = new JLabel();
		city_names = new String[]{"北京","上海","广州","深圳"};
		cities_CheckBoxs = new JCheckBox[city_names.length];
		ok_Button = new JButton("提交");
		
		//设置复选框的大小、位置、字体
		confirm_CheckBox.setSize(250, 40);
		confirm_CheckBox.setLocation(30, 30);
		confirm_CheckBox.setFont(new Font("微软雅黑",Font.PLAIN,20));
		//设置复选框选中按钮为可用状态,复选框未被选中为不可用状态
//		confirm_CheckBox.addActionListener(new ActionListener() {
//			
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				//复选框是否被选中
//				boolean flag = confirm_CheckBox.isSelected();
//				next_Button.setEnabled(flag);
//			}
//		});
		
		confirm_CheckBox.addItemListener(new ItemListener() {
			
			@Override
			public void itemStateChanged(ItemEvent e) {
				//复选框是否被选中
				boolean flag = confirm_CheckBox.isSelected();
				next_Button.setEnabled(flag);
				
			}
		});

		//设置按钮的大小、位置、字体、不可见
		next_Button.setSize(100, 40);
		next_Button.setLocation(30, 80);
		next_Button.setFont(new Font("微软雅黑",Font.PLAIN,20));
		next_Button.setEnabled(false);
		
		
		//设置标签
		cities_Label.setSize(200, 40);
		cities_Label.setLocation(30, 150);
		cities_Label.setFont(new Font("微软雅黑",Font.PLAIN,20));
		
		//设置复选框
		for(int i=0;i

Java基础——GUI——Swing中常用容器和组件_第21张图片                      Java基础——GUI——Swing中常用容器和组件_第22张图片

(5)单选按钮组件

待补充

(6)进度条组件

待补充

(7)列表框组件JList

Java基础——GUI——Swing中常用容器和组件_第23张图片

常见方法:

  • Java基础——GUI——Swing中常用容器和组件_第24张图片

1)创建列表框

列表框只是展示数据的窗口,我们看到的列表框的数据并不是来自于列表本身,这些数据来自于它所创建的数据容器

有三种可以传递给列表的数据容器

  • 第一选择:ListModel(接口):我们可以定义它的实现类DefaultListModel传递给JList的构造方法
  • 第二选择:Vector
  • 第三选择:数组
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;

public class MyJFrame extends JFrame {
	
	private JLabel select_Label;
	private JList left_List;
	
	//String[] leftData;
	//Vector leftData;
	DefaultListModel leftData;
	
	//在构造界面的时候就进行初始化界面
	public MyJFrame() {
		init();
	}
	//初始化界面
	private void init()
	{
		//设置窗体
		this.setSize(600,400);//设置窗体大小
		this.setLocationRelativeTo(null);//设置窗体居中显示
		this.setTitle("创建列表框演示");//设置窗体标题
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置点击窗体x号时退出程序
		
		Container container=this.getContentPane();
		container.setLayout(null);
		
		//要传递给JList的数据容器
		//leftData = new String[]{"关羽","赵云","黄忠","马超","魏延","张飞"};
		//leftData =new Vector();  //Vector并不能像数组一次性添加数据,必须通过add方法添加
		//leftData.add("孙悟空");
		//leftData.add("猪八戒");
		//leftData.add("沙僧");
		leftData = new DefaultListModel();
		leftData.addElement("孙悟空");
		leftData.addElement("猪八戒");
		leftData.addElement("沙僧");
		//对组件进行实例化
		select_Label = new JLabel("你准备带谁出征?");
		//left_List = new JList(leftData);
		//left_List = new JList();
		//left_List.setListData(leftData);
		//left_List = new JList(leftData);
		left_List = new JList();
		left_List.setModel(leftData);
		
		//设置标签
		select_Label.setSize(200, 40);
		select_Label.setLocation(30, 30);
		select_Label.setFont(new Font("微软雅黑",Font.PLAIN,20));
		//设置列表
		left_List.setSize(200, 240);
		left_List.setLocation(30, 80);
		left_List.setFont(new Font("微软雅黑",Font.PLAIN,20));
		left_List.setBorder(BorderFactory.createLineBorder(Color.GRAY,1));

		
		//将6个组件添加到界面容器当中
		container.add(select_Label);
		container.add(left_List);
	}
	
	public static void main(String[] args) {
		MyJFrame frame =new MyJFrame();
		frame.setVisible(true);
	}
}

Java基础——GUI——Swing中常用容器和组件_第25张图片

2)操作列表框

 

(8)树形组件JTree

Java基础——GUI——Swing中常用容器和组件_第26张图片
 

创建树形组件,只能是先添加根结点,然后再逐层去添加子节点

1)硬编码创建树形组件

此种方式用户不能新增,删除任何结点

import java.awt.Container;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class MyJFrame extends JFrame {
	
	private JTree familyTree;
	private JScrollPane family_JScrollPane;
	
	

	
	//在构造界面的时候就进行初始化界面
	public MyJFrame() {
		init();
	}
	//初始化界面
	private void init()
	{
		//设置窗体
		this.setSize(600,400);//设置窗体大小
		this.setLocationRelativeTo(null);//设置窗体居中显示
		this.setTitle("创建列表框演示");//设置窗体标题
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置点击窗体x号时退出程序
		
		Container container=this.getContentPane();
		container.setLayout(null);
		
		//创建一个根节点
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("曹操");
		DefaultMutableTreeNode a1 = new DefaultMutableTreeNode("曹昂");
		DefaultMutableTreeNode a2 = new DefaultMutableTreeNode("曹丕");
		DefaultMutableTreeNode a3 = new DefaultMutableTreeNode("曹植");
		DefaultMutableTreeNode a4 = new DefaultMutableTreeNode("曹彰");
		root.add(a1);
		root.add(a2);
		root.add(a3);
		root.add(a4);
		DefaultMutableTreeNode b1 = new DefaultMutableTreeNode("曹睿");
		DefaultMutableTreeNode b2 = new DefaultMutableTreeNode("曹霖");
		DefaultMutableTreeNode b3 = new DefaultMutableTreeNode("曹志");
		a2.add(b1);
		a2.add(b2);
		a3.add(b3);
		DefaultMutableTreeNode c1 = new DefaultMutableTreeNode("曹芳");
		b1.add(c1);
		
		
		//创建树形组件
		familyTree = new JTree(root);
		familyTree.setFont(new Font("微软雅黑",Font.PLAIN,20));
		
		//创建滚动面板
		family_JScrollPane = new JScrollPane(familyTree);
		family_JScrollPane.setSize(300,250);
		family_JScrollPane.setLocation(30, 30);

		container.add(family_JScrollPane);
	}
	
	public static void main(String[] args) {
		MyJFrame frame =new MyJFrame();
		frame.setVisible(true);
	}
}

Java基础——GUI——Swing中常用容器和组件_第27张图片

2)动态创建树形组件

常用方法:

  • Java基础——GUI——Swing中常用容器和组件_第28张图片
  • Java基础——GUI——Swing中常用容器和组件_第29张图片
  • Java基础——GUI——Swing中常用容器和组件_第30张图片
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import javax.xml.transform.Templates;

public class MyJFrame extends JFrame {
	
	private JTree dynTree;
	private JScrollPane dyn_JScrollPane;
	private DefaultMutableTreeNode rooTreeNode;
	private DefaultMutableTreeNode selectedNode;
	private JTextField nodeName_TextField;
	private JButton createButton;
	private JButton renameButton;
	private JButton deleteButton;
	
	private TreePath path;   //用户选择的结点到根结点的路径
	
	//在构造界面的时候就进行初始化界面
	public MyJFrame() {
		init();
	}
	//初始化界面
	private void init()
	{
		//设置窗体
		this.setSize(600,400);//设置窗体大小
		this.setLocationRelativeTo(null);//设置窗体居中显示
		this.setTitle("创建列表框演示");//设置窗体标题
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置点击窗体x号时退出程序
		
		Container container=this.getContentPane();
		container.setLayout(null);
		
		
		//实例化组件
		rooTreeNode = new DefaultMutableTreeNode("根节点");  //创建根节点
		dynTree = new JTree(rooTreeNode); //创建一颗以rootTreeNode为根节点的树形组件
		dyn_JScrollPane = new JScrollPane(dynTree);
		createButton = new JButton("新增");
		deleteButton = new JButton("删除");
		renameButton = new JButton("修改");
		nodeName_TextField = new JTextField();
		
		//设置树形组件
		dynTree.setFont(new Font("微软雅黑",Font.PLAIN,18));
		  //设置树形组件的单选模式,只能同时被选中一个结点
		  //先获得树形组件的选择模型对象,然后选择对象模型的单选模式
		dynTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
		
		//为树形组件添加选中结点的监听器
		dynTree.addTreeSelectionListener(new TreeSelectionListener() {
			//一旦用户选中结点的状态发生变化,立刻执行此方法
            //用户必须两次选择的结点不同才会起作用,因为这样才代表结点状态改变
			@Override
			public void valueChanged(TreeSelectionEvent e) {
				//当我们从树形组件上选择了一条结点的时候,那么从根结点到它的路径是确定的(因为是单继承)
				path = e.getPath();  //获得根节点到被选中的结点的唯一路径
			}
		});
		
		//设置滚动面板
		dyn_JScrollPane.setSize(350, 250);
		dyn_JScrollPane.setLocation(200,30);
		dyn_JScrollPane.setFont(new Font("微软雅黑",Font.PLAIN,18));
		
		//设置文本框
		nodeName_TextField.setSize(80, 30);
		nodeName_TextField.setLocation(290,300);
		nodeName_TextField.setFont(new Font("微软雅黑",Font.PLAIN,18));
		
		//设置新增按钮
		createButton.setSize(80, 30);
		createButton.setLocation(290,300);
		createButton.setFont(new Font("微软雅黑",Font.PLAIN,18));
		createButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				//获得树形组件中被选中的结点
				//这个方法的返回值是Object类型,此处需要强制类型转换
				selectedNode = (DefaultMutableTreeNode)dynTree.getLastSelectedPathComponent();		
				String nameString = nodeName_TextField.getText();
				
				if(checkNode_or_checkInput(selectedNode,nameString))
				{
					selectedNode.add(new DefaultMutableTreeNode(nameString));
					//展开被选中结点的路径上的所有结点
					dynTree.expandPath(path);
					//当我们给树形组件新增一个结点的时候,树形图上不会立刻显示新增的结点
					//调用以下方法刷新树形组件
					dynTree.updateUI();
					//创建之后清空文本域
					nodeName_TextField.setText("");
				}

			}
		});
		
		//设置删除按钮
		deleteButton.setSize(80, 30);
		deleteButton.setLocation(380,300);
		deleteButton.setFont(new Font("微软雅黑",Font.PLAIN,18));
		deleteButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				selectedNode = (DefaultMutableTreeNode)dynTree.getLastSelectedPathComponent();
				if(selectedNode == null)
				{
					System.out.println("请选中一个结点");
					return;
				}
				
				if(selectedNode.isRoot())
				{
					System.out.println("不能删除根节点哦");
					return;
				}
				selectedNode.removeFromParent();
				dynTree.updateUI();
			}
		});
		
		//设置修改按钮
		renameButton.setSize(80, 30);
		renameButton.setLocation(470,300);
		renameButton.setFont(new Font("微软雅黑",Font.PLAIN,18));
		renameButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				//获得树形组件中被选中的结点
				//这个方法的返回值是Object类型,此处需要强制类型转换
				selectedNode = (DefaultMutableTreeNode)dynTree.getLastSelectedPathComponent();
				String nameString = nodeName_TextField.getText();
				//不将上述两行代码进行封装的原因是因为上面两行是采集数据,而checkNode_or_checkInput是验证数据
				//从逻辑上来说,我们不应该把采集数据和验证数据放在一个功能中
				if(checkNode_or_checkInput(selectedNode,nameString)){
					selectedNode.setUserObject(nameString);
					dynTree.updateUI();
					//修改之后清空文本域
					nodeName_TextField.setText("");
				}


			}
		});
		//设置文本域
		nodeName_TextField.setSize(80, 30);
		nodeName_TextField.setLocation(200,300);
		nodeName_TextField.setFont(new Font("微软雅黑",Font.PLAIN,18));

		//将组件添加到容器中
		container.add(dyn_JScrollPane);
		container.add(createButton);
		container.add(deleteButton);
		container.add(renameButton);
		container.add(nodeName_TextField);
		
	}
	
	public static void main(String[] args) {
		MyJFrame frame =new MyJFrame();
		frame.setVisible(true);
	}
	
	//检验用户是否选择了结点或进行了输入
	private boolean checkNode_or_checkInput(DefaultMutableTreeNode node,String name)
	{
		//判断用户是否选择了一个结点
		if(node == null)
		{
			System.out.println("请选择一个结点");
			return false;
		}
		//判断用户是否进行了输入
		if("".equals(name))
		{
			System.out.println("请填写结点名称");
			return false;
		}
		return true;
	}
}

Java基础——GUI——Swing中常用容器和组件_第31张图片    Java基础——GUI——Swing中常用容器和组件_第32张图片

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Java)