Swing

两大窗口、两大中间容器、四大组件

两大窗口(JFrame和Jdialog)

JFrame:

package Swing;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
public class Example15 extends JFrame {
	public Example15() {
     this.setTitle("JFrameTest");
     this.setSize(250, 300);
     //定义一个按钮组件
     JButton bt=new JButton("按钮");
     //设置为流式布局管理器
     this.setLayout(new FlowLayout());
     this.add(bt);
     //设置单击关闭按钮时的默认操作
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     this.setVisible(true);
	}
	public static void main(String[] args) {
		new Example15();
	}
}

Jdialog:

package Swing;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Example16 {
public static void main(String[] args) {
	JButton btn1 =new JButton("模拟对话框");
	JButton btn2 =new JButton("非模拟对话框");
	
	JFrame f= new JFrame("DialogDemo");
	f.setSize(300,300);
	f.setVisible(true);
	f.setLocation(300, 300);
	f.setLayout(new FlowLayout());//为内容面板设置布局管理器
	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	f.add(btn2);
	f.add(btn1);
	
	final JLabel label= new JLabel();//中间容器
	final JDialog dialog =new JDialog(f,"Dialog");
	dialog.setSize(350, 250);
	dialog.setLocation(350, 250);
	dialog.setLayout(new FlowLayout());
	final JButton btn3=new JButton("确定");
	dialog.add(btn3);//在对话框的内容面板添加按钮
	
	//为模拟对话框添加单击事件
	btn1.addActionListener(new ActionListener(){

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			//设置对话框为模拟
			dialog.setModal(true);
			if(dialog.getComponents().length==1) {
				dialog.add(label);
			}
			//否则修改标签的内容
			label.setText("模拟对话框,点击确定按钮关闭");
			dialog.setVisible(true);
		}
		
	});
	//为非模拟对话框添加事件单击按钮
	btn2.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			//设置对话框非模拟
			dialog.setModal(false);
			//如果J
			if(dialog.getComponents().length==1) {
				dialog.add(label);
			}
			//否则修改标签的内容
			label.setText("非模拟对话框,点击确定关闭");
			dialog.setVisible(true);
		}
		
	});
	btn3.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			dialog.dispose();
		}
		
	});
}
}

两大中间容器(JFrame和JScrollPane)

package Swing;

import java.awt.BorderLayout;

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

public class Example17 extends JFrame {
      public Example17() {
    	  this.setTitle("PanelDemo");
    	  //创建滚动面板
    	  JScrollPane scrollPane=new JScrollPane();
    	  //设置水平滚动条策略 滚动条一直显示
    	  scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants
    			  .HORIZONTAL_SCROLLBAR_AS_NEEDED);
    	  
    	  scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants
    			  .VERTICAL_SCROLLBAR_ALWAYS);;
    			  
    	//定义一个JPanel面板		  
    		JPanel panel = new JPanel();	
    		//在面板上添加四个按钮
    		panel.add(new JButton("按钮1"));
    		panel.add(new JButton("按钮2"));
    		panel.add(new JButton("按钮3"));
    		panel.add(new JButton("按钮4"));
    		panel.add(new JButton("按钮1"));
    		panel.add(new JButton("按钮2"));
    		panel.add(new JButton("按钮3"));
    		panel.add(new JButton("按钮4"));
    		//设置JPanel面板上的滚动条
    		scrollPane.setViewportView(panel);
    		//滚动面板添加到内容面板的center区域
    		this.add(scrollPane,BorderLayout.CENTER);
    		
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setSize(400, 250);
    		this.setVisible(true);
      }
      public static void main(String[] args) {
		new Example17();
	}
}

四大组件(文本组件、按钮组件、下拉框组件、菜单栏组件)

文本组件:JtextArea文本域,JtextFeid文本框

package Swing;

import java.awt.BorderLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Example18 extends JFrame{
  JButton sendBt;
  JTextArea chatContent;
  JTextField inputField;
  public Example18() {
	  this.setLayout(new BorderLayout());
	
	  chatContent =new JTextArea(12,34); // 创建一个文本域
	  //创建一个滚动面板,将文本域作为其显示组件
	  JScrollPane showPanel =new JScrollPane(chatContent);
	   chatContent.setEditable(false);//创建
	   JPanel inputPanel =new JPanel();//创建一个Jpanel
	   inputField = new JTextField(20);//创建一个文本框
	   sendBt =new JButton("发送");//创建一个按钮
	   
	   //为sentBt添加事件
	   sendBt.addActionListener(new ActionListener() {
		
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			String s = inputField.getText();//获取输入文本的信息
			if(s!=null&&!s.trim().equals("")) {
				chatContent.append("本人:"+s+"\n");
			}else {
				chatContent.append("聊天信息不能为空"+"\n");
			}
		     inputField.setText("");
		}
	});	   
	   Label label =new Label("聊天信息");//创建一个标签
	   inputPanel.add(label);
	   inputPanel.add(inputField);
	   inputPanel.add(sendBt);
	   
	   //将滚动面板和JPanel面板添加到JFrame窗口
	   this.add(showPanel,BorderLayout.CENTER);
	   this.add(inputPanel, BorderLayout.SOUTH);
	   this.setTitle("聊天窗口");
	   this.setSize(400,300);
	   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	   this.setVisible(true);
  }
  public static void main(String[] args) {
	new Example18();
}
}

按钮组件(JButton、JCeckBox、JRadioButton)

JCeckBox:

package Swing;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Example19 extends JFrame{
  private JCheckBox italic;
  private JCheckBox bold;
  private JLabel label;
  public Example19() {
	  //创建一个标签,标签文本居中对齐
	  label = new JLabel("传智播客",JLabel.CENTER);
	  //设置标签文本的字体
	  label.setFont(new  Font("宋体",Font.PLAIN,20));
	  this.add(label); //在center域添加标签
	  
	  JPanel panel =new JPanel(); //创建一个面板
	  //创建两个JCheckBox复选框
	  italic = new JCheckBox("复选框1");
	  bold = new JCheckBox("复选框2");
	  
	  //为复选框定义ActionListener监听器
	  ActionListener listener = new ActionListener() {
		  public void actionPerformed(ActionEvent e) {
			 int mode =0;
			 if(bold.isSelected()) {
				 mode +=Font.BOLD; 
			 }
			 if(italic.isSelected())
				 mode +=Font.ITALIC;
			 label.setFont(new Font("宋体",mode,20));
		  }
  };
        //为两个复选框添加监听器
        italic.addActionListener(listener);
        bold.addActionListener(listener);
        panel.add(italic);
        panel.add(bold);
  
  
      italic.addActionListener(listener);
      this.setVisible(true);
      this.setSize(300, 300);
      this.add(panel,BorderLayout.SOUTH); //将面板添加到JPanel领域
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  //为两个复选框添加监听器
  public static void main(String[] args) {
	new Example19();
}
}

JRadioButton

package Swing;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class Example20 extends JFrame{
   private ButtonGroup group;//单选按钮组对象
   private JPanel panel; //JPanel面板放置3个JRadioButton按钮
   private JPanel pallet; // JPanel面板作为调色
   public Example20() {
	pallet = new JPanel();    //创建JPanel对象
	this.add(pallet,BorderLayout.CENTER); //将调色面板放置在中间
	panel = new JPanel();
	
   group = new ButtonGroup();
   //调用addJRadioButton()方法
   addJRadioButton("灰");
   addJRadioButton("粉");
   addJRadioButton("黄");
   this.add(panel,BorderLayout.SOUTH);
   this.setSize(300, 300);
   this.setDefaultCloseOperation(JFrame.TEXT_CURSOR);
   this.setVisible(true);
   }
/**
 * @param JRadioButton按钮的文本信息 用于创建一个带文本信息的JRadioButton按钮
 * 将按钮添加到panel面板和ButtonGroup按钮中  并添加监听器
 */
private void addJRadioButton(String text) {
	// TODO Auto-generated method stub
	JRadioButton radioButton = new JRadioButton(text);
	group.add(radioButton);
	panel.add(radioButton);
	//为单选按钮添加监听器
	radioButton.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			Color color = null;
			if("灰".equals(text)) {
		      color= Color.GRAY;
			}
			else if("粉".equals(text)) {
				color = Color.PINK;
			}
			else if("黄".equals(text)) {
				color = Color.yellow;
			}
			else {
				color = Color.white;
			}
			pallet.setBackground(color);
		}
		
	});
}
public static void main(String[] args) {
	new Example20();
}
}

JcomoBox下拉框

package Swing;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

/*
 * 下拉列表按钮框
 */
public class Example21 extends JFrame {
   private JComboBox comboBox; //定义一个JComboBox组合框
   private JTextField field;
   public Example21() {
	   JPanel panel = new JPanel(); //创建JPanel面板
	   comboBox = new JComboBox(); //创建一个下拉按钮
	   //为组合框添加选项
	   comboBox.addItem("请选着城市");
	   comboBox.addItem("北京");
	   comboBox.addItem("天津");
	   comboBox.addItem("南京");
	   comboBox.addItem("广州");
	   comboBox.addItem("湛江");
	   //为组件添加事件监听器
	   comboBox.addActionListener(new ActionListener() {

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			String item = (String)comboBox.getSelectedItem();//获取下拉框的项目
			if("请选着城市".equals(item)) {
				field.setText("");
			}else {
				field.setText("您选着的城市是"+item);
			}
		}
		   
	   });
	   field = new JTextField(20);
	   panel.add(comboBox); //在面板上添加文本框
	   panel.add(field);
	   
	   //在内容面板中添加JPanel面板
	   this.add(panel,BorderLayout.NORTH);
	   this.setVisible(true);
	   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	   this.setSize(350, 100);
	   
   }
   public static void main(String[] args) {
	new Example21();
}
}

在这里插入图片描述

JMenuBar、Jmenu、JmenuItem菜单组件

package Swing;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Example22 extends JFrame {
   public Example22() {
	   JMenuBar  menuBar = new JMenuBar();//创建菜单栏
	   this.setJMenuBar(menuBar); //将菜单篮添加到JFrame窗口中
	   JMenu menu = new JMenu("操作");//创建菜单栏
	   menuBar.add(menu); // 将菜单添加到菜单篮上
	   
	    //创建两个菜单项
	   JMenuItem item1 = new JMenuItem("弹出窗口");
	   JMenuItem item2 =new JMenuItem("关闭");
	   JMenuItem item3 = new JMenuItem("选着");
	   //为菜单项添加事件监听器
	   item1.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			//创建一个JDialog窗口
			JDialog dialog = new JDialog(Example22.this,true);//接受一个框架 ,和是否对话框
			dialog.setTitle("弹出窗口");
			dialog.setSize(200, 200);
			dialog.setLocation(50, 50);
			dialog.setVisible(true);
		}		   
	   });
	   item2.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			System.exit(0);			
		}  
	   });
	   menu.add(item1);//将菜单项目添加到菜单中
	   menu.addSeparator();//添加分隔符
	   menu.add(item2);
	   menu.insert(item3, 2);
	   menu.insertSeparator(3);
	   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	   this.setSize(300, 300);
	   this.setVisible(true);
   }
   public static void main(String[] args) {
	new Example22();
}
}

在这里插入图片描述

JPopupMenu弹出式菜单

package Swing;

import java.awt.Frame;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;

public class Example23 extends JFrame {
	private JPopupMenu popupmenu;// 属性
   public Example23(){
	   //创建一个JPopuMenu 菜单
	   popupmenu = new JPopupMenu();
	   //创建三个JMenuItem菜单项
	   JMenuItem refreshItem = new JMenuItem("刷新");
	   JMenuItem createItem = new JMenuItem("创作");
	   JMenuItem exiteItem = new JMenuItem("退出");
	   //为exitItem菜单栏添加事件监听器
	   exiteItem.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
		System.exit(0);	
		}  
	   });
	   //往JPopupMenu菜单添加菜单项
	   popupmenu.add(refreshItem);
	   popupmenu.add(createItem);
	   popupmenu.addSeparator();
	   popupmenu.add(exiteItem);
	   //为JFrame窗口添加Clicked鼠标事件监听器
	   this.addMouseListener(new MouseAdapter() {
		  public void mouseClicked(MouseEvent e) {
			  //如果单击的数鼠标的右键,显示JPopupMenu菜单
			  if(e.getButton()==e.BUTTON3) {
				  popupmenu.show(e.getComponent(),e.getX(),e.getY());
			  }
		  }
	   });
	   this.setSize(300,300);
//       this.setDefaultCloseOperration();
//	   this.addWindowListener(new windowListener()) ;
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	   this.setVisible(true);
   }
   public static void main(String[] args) {
	new Example23();
}

}

Jtable表

package Swing;
import javax.swing.*;
import javax.swing.*;
public class Example24 {
	//创建JFrame窗口
	JFrame jf=new JFrame("简单表格");
	//定义一维数组作为标题
	Object[]columnTitle= {"姓名","年龄","性别"};
	//声明Jtalle类型的变量
	JTable table;
	//1.定义二维数组作为表格行对象shuju
	Object[][]tableDate= {
		new Object[] {"李清照",29,"女"},
		new Object[] {"苏格拉底",56,"男"},
		new Object[] {"李白",35,"男"},
		new Object[] {"弄玉",18,"女"},
		new Object[] {"虎头",2,"男"},
	};
	//3。使用JTable对象创建表格
	public void init() {
		//以二维数组和一维数组来创建一个Ttable对象
		table =new JTable(tableDate,columnTitle);
		//将JTable对象放在JScrollPane中,并将JScrollPane放在窗口中显示出来
		jf.add(new JScrollPane(table));
		jf.pack();
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
		
	}
	public static void main(String []args) {
		new Example24().init();
	}
}

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金石不渝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值