zoukankan      html  css  js  c++  java
  • 2019Java第十三周课程总结

    这周主要是学习了监听器还有制作记事本,主要可以由一下代码来体现

    监听器

    实验代码

    package text12;
    
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.Panel;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.util.Vector;
    
    import javax.swing.*;
    public class Text12 extends JFrame implements ItemListener/* KeyListener,MouseListener*/ {
    	
    	JTextArea ta;
    	JScrollPane sp;
    	JRadioButton pb,pb1,pb2;
    	ButtonGroup group;
    	JLabel la,la1;
    	JPanel pane;
    	JCheckBox cb,cb1;
    	Container con;
    	JList list,list1;
    	String tv[] = {"美剧","韩剧","日剧","泰剧","港剧"};
    	Vector<String> v;
    	
    	public Text12() {
    		
    		this.setTitle("监听器");
    		v=new Vector<String>();
    		v.add("男");
    		v.add("女");
    		list=new JList(tv);
    		list1=new JList(v);
    		list.setBorder(BorderFactory.createTitledBorder("喜欢看哪个国家的剧"));
    		list1.setBorder(BorderFactory.createTitledBorder("性别"));
    		list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    		list1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    		
    		con=this.getContentPane();
    		cb=new JCheckBox("舒畅");
    		cb1=new JCheckBox("杨蓉");
    		pane=new JPanel(new FlowLayout(FlowLayout.LEFT));
    		pane.setBorder(BorderFactory.createTitledBorder("调查表"));
    		la=new JLabel("最喜欢的男明星是:         ");
    		la1=new JLabel("最喜欢的女明星是:          ");
    		pb=new JRadioButton("朱一龙");
    		pb1=new JRadioButton("肖战");
    		pb2=new JRadioButton("邓伦");
    		group=new ButtonGroup();
    		group.add(pb);
    		group.add(pb1);
    		group.add(pb2);
    		pane.add(la);
    		pane.add(pb);
    		pane.add(pb1);
    		pane.add(pb2);
    		
    		pane.add(la1);
    		pane.add(cb);
    		pane.add(cb1);
    
    		pane.add(list);
    		pane.add(list1);
    		pb.addItemListener(this);
    		pb1.addItemListener(this);
    		pb2.addItemListener(this);
    		con.add(pane);
    	//	ta=new JTextArea(4,5);
    	//	sp=new JScrollPane(ta,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    	//	ta.addKeyListener(this);
    	//	ta.addMouseListener(this);
    		
            this.pack();	
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		this.setVisible(true);
    	}
    
    
    	public static void main(String[] args) {
    		new Text12();
    
    	}
    
    
    	@Override
    	public void itemStateChanged(ItemEvent e) {
    		if(e.getSource()==pb) {
    			System.out.println(pb.getText());
    		}	
    		
    	}
    
    
    	
    
    /*	@Override
    	public void keyTyped(KeyEvent e) {
    		ta.append(e.getKeyChar()+"
    ");
    		
    	}
    
    
    	@Override
    	public void keyPressed(KeyEvent e) {
    		ta.append(e.getKeyCode()+"
    ");
    		
    	}
    
    	@Override
    	public void keyReleased(KeyEvent e) {
    		ta.append(KeyEvent.getKeyText(e.getKeyCode())+"
    ");
    		
    	}
    
    	@Override
    	public void mouseClicked(MouseEvent e) {
    		int c=e.getButton();
    		String mouse;
    		if(c==MouseEvent.BUTTON1) {
    			mouse="左键";
    		}else if(c==MouseEvent.BUTTON3){
    			mouse="右键";
    		}else {
    			mouse="中键";
    		}
    		ta.append(mouse);
    		
    	}
    
    	@Override
    	public void mousePressed(MouseEvent e) {
    		int a=e.getClickCount();
    		ta.append(a+"
    ");
    		
    	}
    
    	@Override
    	public void mouseReleased(MouseEvent e) {
    		String str=MouseEvent.getMouseModifiersText(WIDTH);
    		ta.append(str);
    		
    	}
    
    	@Override
    	public void mouseEntered(MouseEvent e) {
    		int x=e.getX();
    		int y=e.getY();
    		ta.append("("+x+","+y+")");
    		
    	}
    
    	@Override
    	public void mouseExited(MouseEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    */
    }
    

    运行截图

    记事本

    package jishiben;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import javax.swing.*;
    import javax.swing.undo.UndoManager;
    
    public class Jishiben implements ActionListener{
    
    	JFrame frame;
    	JTextArea text;
    	JScrollPane sp;
    	JMenuItem newItem,windomItem,openItem,saveItem,othersaveItem,pagesetupItem,printItem,closeItem;
    	JMenuBar bar;
    	JMenu fileMenu,editMenu,formatMenu,checkMenu,helpMenu;
    	JFileChooser choose;
    	File file;
    	JTable table;
    	JMenuItem blankItem;
    	UndoManager undoManager;
    	
    	public void Wenjian() {
    		
    		frame=new JFrame("记事本");
    		text=new JTextArea();
    		sp=new JScrollPane(text);
    		bar=new JMenuBar();
    		
    		fileMenu=new JMenu("文件(F)");
    		editMenu=new JMenu("编辑(E)");
    		formatMenu=new JMenu("格式(O)");
    		checkMenu=new JMenu("查看(V)");
    		helpMenu=new JMenu("帮助(H)");
    		
    		//关于文件的选项
    		newItem=new JMenuItem("新建(N)");
    		windomItem=new JMenuItem("新窗口(W)");
    		openItem=new JMenuItem("打开(O)");
    		saveItem=new JMenuItem("保存(S)");
    		othersaveItem=new JMenuItem("另存为(A)");
    		pagesetupItem=new JMenuItem("页面设置(U)");
    		printItem=new JMenuItem("打印(P)");
    		closeItem=new JMenuItem("退出(X)");		
    		
    		//关于文件助记符的设置
    		newItem.setMnemonic('N');
    		windomItem.setMnemonic('W');
    		openItem.setMnemonic('O');
    		saveItem.setMnemonic('S');
    		othersaveItem.setMnemonic('A');
    		pagesetupItem.setMnemonic('U');
    		printItem.setMnemonic('P');
    		closeItem.setMnemonic('X');
    		
    		//关于文件快捷键的设置
    		newItem.setAccelerator(KeyStroke.getKeyStroke('N',KeyEvent.CTRL_DOWN_MASK));
    		windomItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK|InputEvent.SHIFT_DOWN_MASK));
    		openItem.setAccelerator(KeyStroke.getKeyStroke('O',KeyEvent.CTRL_DOWN_MASK));
    		saveItem.setAccelerator(KeyStroke.getKeyStroke('S',KeyEvent.CTRL_DOWN_MASK));
    		othersaveItem.setAccelerator(KeyStroke.getKeyStroke('S',KeyEvent.CTRL_DOWN_MASK|KeyEvent.SHIFT_DOWN_MASK));
    		printItem.setAccelerator(KeyStroke.getKeyStroke('P',KeyEvent.CTRL_DOWN_MASK));
    		
    		
    		//关于文件菜单的动作监听
    		newItem.addActionListener(this);
    		windomItem.addActionListener(this);
    		openItem.addActionListener(this);
    		saveItem.addActionListener(this);
    		othersaveItem.addActionListener(this);
    		pagesetupItem.addActionListener(this);
    		printItem.addActionListener(this);
    		closeItem.addActionListener(this);
    
                    fileMenu.add(newItem);
    		fileMenu.add(windomItem);
    		fileMenu.add(openItem);
    		fileMenu.add(saveItem);
    		fileMenu.add(othersaveItem);
    		fileMenu.add(pagesetupItem);
    		fileMenu.add(closeItem);
    		
    		
    		//向菜单栏添加
    		bar.add(fileMenu);
    		bar.add(editMenu);
    		bar.add(formatMenu);
    		bar.add(checkMenu);
    		bar.add(helpMenu);
    		
    		
    		frame.add(sp);
    		frame.setJMenuBar(bar);
    		frame.setSize(400,300);
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    		
    		
    	}
    	
    	public static void main(String[] args) {
    		Jishiben shi=new Jishiben();
    		shi.Wenjian();
    
    	}
    	public void actionPerformed(ActionEvent e){
    		//关于文件下面选项的监听
    		if(e.getSource()==newItem) {
    		    text.setText("");
    		}else if(e.getSource()==windomItem) {
    			Jishiben ben =new Jishiben();
    			ben.Wenjian();
    		}else if(e.getSource()==openItem) {
    			choose=new JFileChooser();
    			choose.showOpenDialog(null);
    			file=choose.getSelectedFile();
    			try {
    				FileInputStream input=new FileInputStream(file);
    			    byte[] b=new byte[input.available()];
    			    input.read(b);
    			    text.append(new String(b));
    			    input.close();
    				
    			} catch (FileNotFoundException e1) {
    				e1.printStackTrace();
    			} catch (IOException e1) {
    				e1.printStackTrace();
    		    }
    		}else if(e.getSource()==othersaveItem) {
    			choose=new JFileChooser();
    			choose.showOpenDialog(null);
    			file=choose.getSelectedFile();
    			try {
    				if(!file.exists()) {
    				  file.createNewFile();
    			    }
    				FileOutputStream output=new FileOutputStream(file);
    				byte[] b=text.getText().getBytes();
    				output.write(b);
    				output.close();
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
    		}else if(e.getSource()==saveItem) {
    			choose=new JFileChooser();
    			choose.showOpenDialog(null);
    			file=choose.getSelectedFile();
    			try {
    				FileOutputStream output=new FileOutputStream(file);
    				byte[] b=text.getText().getBytes();
    				output.write(b);
    				output.close();
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
    		}else if(e.getSource()==pagesetupItem) {
    			
    		}else if(e.getSource()==printItem) {
    			
    		}else if(e.getSource()==closeItem) {
    			System.exit(1);
    		}
    	}
    
    }
    

    运行截图

    主要学习监听器及各种事件处理
    1)键盘监听
    使用KeyListener接口
    2)鼠标监听
    使用MouseListener接口,其中MouseEvent中有getButton(),getX(),getY()等方法
    3)单选钮:JRadioButton及事件处理
    方法:
    setSelected();是否被选中
    setText(String);设置显示文本
    setIcon(Icon);设置图片
    其事件处理使用ItenListener
    4)复选框:JCheckBoxji事件处理
    方法:
    JCheckBox();创建文本对象
    其事件处理也是用ItemListener接口
    5)列表框:JList及事件处理
    方法:
    int[] getSeletrdIndices();返回所选择的所有数组
    Jlist(ListModel/Object[] listData/Vector<?>listData);构造JList
    其事件处理使用ListSelectionListener接口

    菜单组件
    JMenu、JMenuBar、JMenuItem可实现简单的菜单外观,使用事件监听可对应作出一些功能的实现,如代码记事本

  • 相关阅读:
    谁是你心目中最优秀的ajax框架
    23种设计模式(1):单例模式
    23种设计模式(8):观察者模式
    设计模式六大原则(3):依赖倒置原则
    23种设计模式(2):工厂方法模式
    oracle中给表和字段添加注释
    单例模式讨论篇:单例模式与垃圾回收
    设计模式六大原则(6):开闭原则
    mysql命名锦集
    23种设计模式(3):抽象工厂模式
  • 原文地址:https://www.cnblogs.com/H-Alice/p/11914157.html
Copyright © 2011-2022 走看看