//NoteBook.java import java.io.*; import java.awt.*; import java.awt.event.*; import java.awt.datatransfer.*; import java.awt.event.ActionListener; import javax.swing.*; ///import java.lang.*; import java.util.EventListener; public class NoteBook extends JFrame implements ActionListener{ MenuBar menuBar = new MenuBar(); //awt Menu File = new Menu("File"), Edit = new Menu("Edit"), Option = new Menu("Option"), Help = new Menu("Help"); MenuItem menuItem[] = { new MenuItem("New"), new MenuItem("Open"), new MenuItem("Save"), new MenuItem("Exit"), new MenuItem("SAll"), new MenuItem("Cut"), new MenuItem("Copy"), new MenuItem("Paste"), new MenuItem("Collor"), new MenuItem("Fontt"), new MenuItem("Helper") }; TextArea textArea = new TextArea(); private FileDialog openFileDialog = new FileDialog(this,"OpenFile",FileDialog.LOAD); private FileDialog saveFileDialog = new FileDialog(this,"SaveFile",FileDialog.SAVE); String fileName = "NoName"; Color cColor = new Color(0,0,0); Font font = new Font("华文中宋",Font.PLAIN,25); Toolkit toolkit = Toolkit.getDefaultToolkit(); Clipboard clipboard = toolkit.getSystemClipboard(); JColorChooser colorChooser = new JColorChooser(); JFontChooser fontChooser = new JFontChooser(); public NoteBook() { setSize(500,500); setTitle("DongXue"); setFont(new Font("华文中宋",Font.PLAIN,15)); setBackground(Color.BLUE); setMenuBar(menuBar); menuBar.add(File); menuBar.add(Edit); menuBar.add(Option); menuBar.add(Help); for(int i=0; i<4; i++) { File.add(menuItem[i]); Edit.add(menuItem[i+4]); } Option.add(menuItem[8]); Option.add(menuItem[9]); Help.add(menuItem[10]); add(textArea); textArea.setFont(new Font("华文中宋",Font.PLAIN,25)); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { e.getWindow().dispose(); System.exit(0); } }); for(int i=0; i<11; i++) { menuItem[i].addActionListener(this); } } public void actionPerformed(ActionEvent e) { Object eventSource = e.getSource(); if (eventSource == menuItem[0]) { //new textArea.setText(""); } else if (eventSource == menuItem[1]) { //open openFileDialog.show(); fileName = openFileDialog.getDirectory()+openFileDialog.getFile(); if (fileName != null) { openFile(fileName); } } else if (eventSource == menuItem[2]) { //save saveFileDialog.show(); fileName = saveFileDialog.getDirectory()+openFileDialog.getFile(); if (fileName != null) { saveFile(fileName); } } else if (eventSource == menuItem[3]) { //exit System.exit(0); } else if (eventSource == menuItem[4]) { //select all textArea.selectAll(); } else if (eventSource == menuItem[5]) { //cut String text = textArea.getSelectedText(); StringSelection stringSel = new StringSelection(text); clipboard.setContents(stringSel, null); textArea.replaceText("", textArea.getSelectionStart(), textArea.getSelectionEnd()); } else if (eventSource == menuItem[6]) { //copy String strSel = textArea.getSelectedText(); StringSelection stringSel = new StringSelection(strSel); clipboard.setContents(stringSel, null); } else if (eventSource == menuItem[7]) { //paste Transferable transfer = clipboard.getContents(this); if (transfer == null) { System.exit(0); } String text = ""; try { text = (String)transfer.getTransferData(DataFlavor.stringFlavor); } catch (Exception ex) {} textArea.replaceText(text,textArea.getSelectionStart(), textArea.getSelectionEnd()); } else if (eventSource == menuItem[8]) { //color cColor = colorChooser.showDialog(this, "Color Select", cColor); textArea.setForeground(cColor); } else if (eventSource == menuItem[9]) { //font font = fontChooser.showDialog(this, "Font Select"); textArea.setFont(font); } else if (eventSource == menuItem[10]) { //help JOptionPane.showMessageDialog(null,"this is notebook"); } } private void openFile(String fileName) { try { File file = new File(fileName); FileReader readIn = new FileReader(file); int charsRead = 0; int size = (int)file.length(); char content[] = new char[size]; while(readIn.ready()) charsRead += readIn.read(content,charsRead,size-charsRead); readIn.close(); textArea.setText(new String(content,0,charsRead)); } catch(Exception e) { JOptionPane.showMessageDialog(this, "Error read"); } } private void saveFile(String fileName) { try { File file = new File(fileName); FileWriter writeIn = new FileWriter(file); writeIn.write(textArea.getText()); writeIn.close(); } catch (Exception e) { // TODO: handle exception JOptionPane.showMessageDialog(this, "Error write"); } } public static void main(String args[]) { NoteBook noteBook = new NoteBook(); noteBook.show(); } } //JFontChooser.java package design; /* * JFontChooser.java * * Created on 2006年11月17日, 上午11:21 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ // package lbf.swing; /** * * @author lbf */ import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.*; import javax.swing.event.*; public class JFontChooser extends JPanel implements ActionListener,ListSelectionListener{ private JDialog jd;//用于显示模态的窗体 private JComboBox fonts;//用于选择字体的下拉框 private JList face,size;//用于选择字形和字号的列表 private JTextField sizeJT;//用于显示选中的字形和字号 private JButton ok,cancel;//表示选中和取消的按钮 private Font current;//表示当然选中的字体 private GraphicsEnvironment ge;//表示当前的图形环境 private JLabel demo;//表示预览的label private String fontName="宋体"; private int fontStyle=Font.PLAIN,fontSize=20; private Frame owner;//表示父类的组件窗体 private Hashtable<String,Integer> ht;//名字到大小的映射 /** Creates a new instance of JFontChooser */ public JFontChooser() { initOther(); } private void initOther(){ current=new Font(fontName,fontStyle,fontSize); ht=new Hashtable<String,Integer>(); sizeJT=new JTextField("20"); sizeJT.setEditable(false); sizeJT.setBounds(260,40,50,20); ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] family=ge.getAvailableFontFamilyNames(); fonts=new JComboBox(family); fonts.setEditable(false); fonts.setMaximumRowCount(5); demo=new JLabel("千里冰封 ABCD abcd",JLabel.CENTER); demo.setFont(current); String[] faceString={"正常","粗体","斜体","粗体+斜体"}; String[] sizeString={"初号","小初","一号","小一","二号","小二", "三号","小三","四号","小四","五号","小五","六号","小六","七号", "八号","5","8","9","10","11","12","14","16","18","20","22","24", "26","28","36","48","72"}; int[] sizeValue={42,36,26,24,22,18,16,15,14,12,11,9,7,6,5,4,5,8,9,10,11,12,14,16,18,20, 22,24,26,28,36,48,72}; for(int i=0;i<sizeString.length;i++){ ht.put(sizeString[i],sizeValue[i]); } face=new JList(faceString); size=new JList(sizeString); face.setSelectedIndex(0); size.setSelectedIndex(25); fonts.setSelectedItem("宋体"); face.setVisibleRowCount(4); size.setVisibleRowCount(4); ok=new JButton("确定"); cancel=new JButton("取消"); ok.addActionListener(this); cancel.addActionListener(this); fonts.addActionListener(this); face.addListSelectionListener(this); size.addListSelectionListener(this); } private void initWindow(String title){ this.setLayout(new BorderLayout()); JLabel fontLabel=new JLabel("字体"); JLabel faceLabel=new JLabel("字形"); JLabel sizeLabel=new JLabel("字号"); fontLabel.setForeground(Color.RED); faceLabel.setForeground(Color.RED); sizeLabel.setForeground(Color.RED); fontLabel.setBounds(20,20,100,20); faceLabel.setBounds(180,20,80,20); sizeLabel.setBounds(260,20,50,20); fonts.setBounds(10,40,127,21); JScrollPane faceScroll=new JScrollPane(face); JScrollPane sizeScroll=new JScrollPane(size); faceScroll.setBounds(180,40,65,100); sizeScroll.setBounds(260,60,50,80); JPanel up=new JPanel(null); JPanel center=new JPanel(new BorderLayout()); JPanel bottom=new JPanel(); up.setPreferredSize(new Dimension(345,160)); up.add(fontLabel); up.add(faceLabel); up.add(sizeLabel); up.add(fonts); up.add(faceScroll); up.add(sizeScroll); up.add(sizeJT); up.setBorder(BorderFactory.createTitledBorder("选择区")); center.add(demo,BorderLayout.CENTER); center.setBorder(BorderFactory.createTitledBorder("预览区")); bottom.add(ok); bottom.add(cancel); this.add(up,BorderLayout.NORTH); this.add(center,BorderLayout.CENTER); this.add(bottom,BorderLayout.SOUTH); jd=new JDialog(owner,title,true); jd.getContentPane().add(this,BorderLayout.CENTER); jd.setSize(360,360); jd.setResizable(false); jd.setLocationRelativeTo(owner); jd.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent we){ current=null; jd.dispose(); } }); jd.setVisible(true); } public void actionPerformed(ActionEvent ae){ if(ae.getSource()==fonts){ fontName=(String)fonts.getSelectedItem(); current=new Font(fontName,fontStyle,fontSize); demo.setFont(current); this.repaint(); }else if(ae.getSource()==ok){ jd.dispose(); }else if(ae.getSource()==cancel){ current=null; jd.dispose(); } } public void valueChanged(ListSelectionEvent le){ if(le.getSource()==face){ String value=(String)face.getSelectedValue(); if(value.equals("正常")){ fontStyle=Font.PLAIN; }else if(value.equals("粗体")){ fontStyle=Font.BOLD; }else if(value.equals("斜体")){ fontStyle=Font.ITALIC; }else if(value.equals("粗体+斜体")){ fontStyle=Font.ITALIC|Font.BOLD; } current=new Font(fontName,fontStyle,fontSize); demo.setFont(current); this.repaint(); }else if(le.getSource()==size){ String sizeName=(String)size.getSelectedValue(); sizeJT.setText(sizeName); fontSize=ht.get(sizeName); current=new Font(fontName,fontStyle,fontSize); demo.setFont(current); this.repaint(); } } public static Font showDialog(Frame owner,String title){ JFontChooser jf=new JFontChooser(); jf.initWindow(title); return jf.current; } public static void main(String[] args) { System.out.println(JFontChooser.showDialog(null,"请选择")); } }