亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java仿windows記事本小程序

 更新時(shí)間:2019年03月31日 17:11:57   作者:wuyihan1994  
這篇文章主要為大家詳細(xì)介紹了java仿windows記事本小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java仿windows記事本小程序的具體代碼,供大家參考,具體內(nèi)容如下

import java.awt.CheckboxMenuItem;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.peer.ButtonPeer;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.StringReader;
import java.io.StringWriter;
import java.sql.Date;
import java.text.SimpleDateFormat;
 
import javax.print.DocFlavor.STRING;
import javax.script.ScriptException;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.AncestorListener;
import javax.swing.filechooser.FileNameExtensionFilter;
 
public class Crazy_15_4 {
 private JFrame f = new JFrame("記事本");
 
 //成員變量
 static String shearPlate = null;
 static boolean isAutoWrap = true;//是否自動(dòng)換行
 JTextArea ta = new JTextArea(20, 60);
 JScrollPane jsp = new JScrollPane(ta);
 private MenuBar mb = new MenuBar();
 public String fontStr = "宋體";
 public String shapeStr = "0";
 public String sizeStr = "20";
 Font font = new Font(fontStr, Integer.parseInt(shapeStr),Integer.parseInt(sizeStr) );
 
 
 //menu
 Menu file = new Menu("文件");
 Menu edit = new Menu("編輯");
 Menu format = new Menu("格式");
 
 //menuitem
 MenuItem newItem = new MenuItem("新建");
 MenuItem openItem = new MenuItem("打開(kāi)");
 MenuItem saveItem = new MenuItem("保存");
 MenuItem saveAsItem = new MenuItem("另存為");
 MenuItem cutItem = new MenuItem("剪切");
 MenuItem copyItem = new MenuItem("復(fù)制");
 MenuItem pasteItem = new MenuItem("粘貼");
 CheckboxMenuItem autoWrap = new CheckboxMenuItem("自動(dòng)換行",isAutoWrap);
 MenuItem FontItem = new MenuItem("字體");
 //使用“ctrl+x”快捷鍵
 MenuItem exitIitem = new MenuItem("退出", new MenuShortcut(KeyEvent.VK_X));
 
 
 
 
 
 public void init() {
 //帶滾動(dòng)條的文本域
 ta.setLineWrap(isAutoWrap);
 jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
 jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
 
 
 file.add(newItem);
 file.add(openItem);
 file.add(saveItem);
 file.add(saveAsItem);
 
 edit.add(cutItem);
 edit.add(copyItem);
 edit.add(pasteItem);
 
 format.add(autoWrap);
 format.add(FontItem);
 
 mb.add(file);
 mb.add(edit);
 mb.add(format);
 
 f.setMenuBar(mb);
 f.addWindowListener(new WindowAdapter() {
 public void windowClosing(WindowEvent we) {
 if(!(ta.getText().equals(""))) {
  Object[] options = {"保存","不保存","取消"};
  int a = JOptionPane.showOptionDialog(null,"是否將更改保存到H:/Programing/無(wú)標(biāo)題.txt","記事本", JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
  if(a == JOptionPane.OK_OPTION ) {
  if(save()) {
  System.exit(0);
  }
  }else if(a == JOptionPane.NO_OPTION) {
  System.exit(0);
  }
 }else {
  System.exit(0);
 }
 }
 });
 
 newItem.addActionListener(new newListener());
 openItem.addActionListener(new openListener());
 saveItem.addActionListener(new saveListener());
 saveAsItem.addActionListener(new saveAsListener());
 cutItem.addActionListener(new cutAsListener());
 copyItem.addActionListener(new copyAsListener());
 pasteItem.addActionListener(new pasteAsListener());
 autoWrap.addItemListener(new autoWrapAsListener());
 FontItem.addActionListener(new fontListener());
 
 ta.setFont(font);
 //使文本框處在屏幕中間
 int width = Toolkit.getDefaultToolkit().getScreenSize().width;
 int height = Toolkit.getDefaultToolkit().getScreenSize().height; 
 f.add(jsp);
 f.pack();
 f.setLocation(width/2-f.getWidth()/2, height/2-f.getHeight()/2);
 f.setVisible(true);
 //避免關(guān)閉對(duì)話框直接關(guān)閉文本文件
 f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
 }
 public static void main(String[] args) {
 new Crazy_15_4().init();
 }
 
 //是否保存
 public void saveOrNot() {
 if(!(ta.getText().equals(""))) {
 Object[] options = {"保存","不保存","取消"};
 int a = JOptionPane.showOptionDialog(null,"是否將更改保存到H:/Programing/無(wú)標(biāo)題.txt","記事本", JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
 if(a == JOptionPane.OK_OPTION ) {
 save();
 }
 }
 }
 //保存文本文件
 public boolean save() {
 boolean isSaved = false;
 JFileChooser jf = new JFileChooser();
 FileNameExtensionFilter filter = new FileNameExtensionFilter("txt","txt");
 jf.setAcceptAllFileFilterUsed(false);
 jf.setFileFilter(filter);
 int value = jf.showSaveDialog(null);
 if(value == JFileChooser.APPROVE_OPTION) {
 File file = jf.getSelectedFile();
 String str = ta.getText();
 byte[] buf = str.getBytes();
 try {
 OutputStream os = new FileOutputStream(file);
 os.write(buf);
 os.flush();
 os.close();
 isSaved = true;
 } catch (IOException e) {
 e.printStackTrace();
 }
 }
 return isSaved;
 }
 //新建監(jiān)聽(tīng)器
 class newListener implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 if(!(ta.getText().equals(""))) {
 Object[] options = {"保存","不保存","取消"};
 int a = JOptionPane.showOptionDialog(null,"是否將更改保存到H:/Programing/無(wú)標(biāo)題.txt","記事本", JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
 if(a == JOptionPane.OK_OPTION ) {
  if(save()) {
  ta.setText("");
  }
 }else if(a == JOptionPane.NO_OPTION) {
  ta.setText("");
 }
 }
 
 }
 }
 
 //打開(kāi)監(jiān)聽(tīng)器,從硬盤目錄打開(kāi)文本文件
 class openListener implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 JFileChooser jf = new JFileChooser();
 FileNameExtensionFilter filter = new FileNameExtensionFilter("txt","txt");
 jf.setAcceptAllFileFilterUsed(false);
 jf.setFileFilter(filter);
 int value = jf.showOpenDialog(null);
 if(value == JFileChooser.APPROVE_OPTION) {
 File file = jf.getSelectedFile();
 try {
  String encoding = "GBK";//考慮編碼格式
  InputStreamReader isr = new InputStreamReader(new FileInputStream(file),encoding);
  BufferedReader br = new BufferedReader(isr);
  String str = null;
  while((str = br.readLine()) != null) {
  ta.append(str);
  }
 } catch (FileNotFoundException e1) {
  // TODO Auto-generated catch block
  e1.printStackTrace();
 } catch (IOException e1) {
  // TODO Auto-generated catch block
  e1.printStackTrace();
 }
 }
 }
 }
 
 //保存監(jiān)聽(tīng)器,以電腦時(shí)間命名
 class saveListener implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 String name = null;
 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
 name = df.format(System.currentTimeMillis());
 File file = new File("H:/Programing/workspace/"+name+".txt");
 String str = ta.getText();
 byte[] buf = str.getBytes();
 if(!str.equals("")) {
 try {
  OutputStream os = new FileOutputStream(file);
  os.write(buf);
  os.flush();
  os.close();
 } catch (IOException e2) {
  e2.printStackTrace();
 }
 }
 }
 }
 
 //另存為監(jiān)聽(tīng)器 
 class saveAsListener implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 save();
 }
 }
 
 //剪切監(jiān)聽(tīng)器 
 class cutAsListener implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 shearPlate = ta.getSelectedText();
 int startPosi = ta.getSelectionStart();
 int endPosi = ta.getSelectionEnd();
 StringBuffer sb = new StringBuffer(ta.getText());
 sb.delete(startPosi, endPosi);
 ta.setText(sb.toString());
 }
 }
 
 //復(fù)制監(jiān)聽(tīng)器 
 class copyAsListener implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 shearPlate = ta.getSelectedText();
 }
 }
 
 //粘貼監(jiān)聽(tīng)器 
 class pasteAsListener implements ActionListener{
 public void actionPerformed(ActionEvent e) {
 int position = ta.getCaretPosition();
 StringBuilder sb = new StringBuilder(ta.getText());
 sb.insert(position, shearPlate);
 ta.setText(sb.toString());
 ta.setCaretPosition(position+shearPlate.length());
 }
 }
 
 //自動(dòng)換行監(jiān)聽(tīng)器 
 class autoWrapAsListener implements ItemListener{
 
 @Override
 public void itemStateChanged(ItemEvent e) {
 if(autoWrap.getState()) {
  isAutoWrap = true;
  ta.setLineWrap(isAutoWrap);
  jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
  jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
 }else {
  isAutoWrap = false;
  ta.setLineWrap(isAutoWrap);
  jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
  jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
 }
 }
 }
 
 //字體監(jiān)聽(tīng)器 
 class fontListener implements ActionListener{
 JFrame jf = new JFrame("字體");
 JPanel jp = new JPanel();
 ButtonPanel fontButton = new ButtonPanel("字體",new String[] {"宋體","黑體","楷體","吳祎晗1.0"});
 ButtonPanel shapeButton = new ButtonPanel("字形",new String[] {"常規(guī)","粗體","斜體","粗體&斜體"});
 ButtonPanel sizeButton = new ButtonPanel("字號(hào)",new String[] {"12","16","20","24","26"});
 public void actionPerformed(ActionEvent e) {
 jp.setBorder(new TitledBorder(new EtchedBorder(),"字體選擇",TitledBorder.CENTER,TitledBorder.TOP));
 jp.add(fontButton);
 jp.add(shapeButton);
 jp.add(sizeButton);
 jf.add(jp);
 jf.pack();
 jf.setLocationRelativeTo(f);
 jf.setVisible(true);
 jf.addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
  fontStr = fontButton.getSelec();
  sizeStr = sizeButton.getSelec();
  font = new Font(fontStr, shapeVal(shapeButton.getSelec()), Integer.parseInt(sizeStr));
  ta.setFont(font);
  }
 });
 }
 
 public int shapeVal(String str) {
 int a = 0;
 switch (str) {
 case "常規(guī)":
  a = 0;
  break;
 case "粗體":
  a = 1;
  break;
 case "斜體":
  a = 2;
  break;
 case "粗體&斜體":
  a = 3;
  break;
 }
 return a;
 }
 }
 
}
 
//定義一個(gè)JPanel類擴(kuò)展類,該類的對(duì)象包含多個(gè)縱向排列的
//JRadioButton控件,且panel擴(kuò)展類可以指定一個(gè)字符串作為TitledBorder
class ButtonPanel extends JPanel{
 private ButtonGroup group;
 public ButtonPanel(String title, String[] options) {
 setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),title));
 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
 group = new ButtonGroup();
 for(int i=0; options!=null&&i<options.length; i++) {
 JRadioButton b = new JRadioButton(options[i]);
 b.setActionCommand(options[i]);
 this.add(b);
 group.add(b);
 if(title.equals("字號(hào)")) {
 b.setSelected(i == 2);
 }else {
 b.setSelected(i == 0);
 }
 }
 }
 public String getSelec() {
 return group.getSelection().getActionCommand();
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于 IntelliJ IDEA 模擬 Servlet 網(wǎng)絡(luò)請(qǐng)求示例

    基于 IntelliJ IDEA 模擬 Servlet 網(wǎng)絡(luò)請(qǐng)求示例

    這篇文章主要介紹了基于 IntelliJ IDEA 模擬 Servlet 網(wǎng)絡(luò)請(qǐng)求示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Java線程池配置的一些常見(jiàn)誤區(qū)總結(jié)

    Java線程池配置的一些常見(jiàn)誤區(qū)總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java線程池配置的一些常見(jiàn)誤區(qū),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java?8中?Stream小知識(shí)小技巧方法梳理

    Java?8中?Stream小知識(shí)小技巧方法梳理

    這篇文章主要介紹了Java8中Stream小知識(shí)小技巧方法梳理,Stream流和迭代器一樣,它只能夠迭代一次。當(dāng)它遍歷完的時(shí)候,我們就稱它已經(jīng)消費(fèi)完了。如果還想重新執(zhí)行操作,那么就只能從原來(lái)的地方再獲取一個(gè)流
    2022-09-09
  • MyBatis映射文件中parameterType與resultType的用法詳解

    MyBatis映射文件中parameterType與resultType的用法詳解

    MyBatis中的ParameterType指的是SQL語(yǔ)句中的參數(shù)類型,即傳入SQL語(yǔ)句中的參數(shù)的類型,下面這篇文章主要給大家介紹了關(guān)于MyBatis映射文件中parameterType與resultType用法的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Java如何Mock FileInputStream問(wèn)題

    Java如何Mock FileInputStream問(wèn)題

    這篇文章主要介紹了Java如何Mock FileInputStream問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Mybatis動(dòng)態(tài)sql中@Param使用詳解

    Mybatis動(dòng)態(tài)sql中@Param使用詳解

    這篇文章主要介紹了Mybatis動(dòng)態(tài)sql中@Param使用詳解,當(dāng)方法的參數(shù)為非自定義pojo類型,且使用了動(dòng)態(tài)sql,那么就需要在參數(shù)前加上@Param注解,需要的朋友可以參考下
    2023-10-10
  • 詳解Lombok的坑

    詳解Lombok的坑

    這篇文章主要介紹了詳解Lombok的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 淺談Java中實(shí)現(xiàn)深拷貝的兩種方式—clone() & Serialized

    淺談Java中實(shí)現(xiàn)深拷貝的兩種方式—clone() & Serialized

    這篇文章主要介紹了Java中實(shí)現(xiàn)深拷貝的兩種方式—clone() & Serialized,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Maven中dependencyManagement管理項(xiàng)目依賴項(xiàng)

    Maven中dependencyManagement管理項(xiàng)目依賴項(xiàng)

    在開(kāi)發(fā)?Java?項(xiàng)目時(shí),管理和協(xié)調(diào)依賴項(xiàng)的版本號(hào)是一項(xiàng)重要而繁瑣的任務(wù),本文主要介紹了Maven中dependencyManagement管理項(xiàng)目依賴項(xiàng),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Spring Boot的應(yīng)用啟動(dòng)與關(guān)閉的方法

    Spring Boot的應(yīng)用啟動(dòng)與關(guān)閉的方法

    本篇文章主要介紹了Spring Boot的應(yīng)用啟動(dòng)與關(guān)閉的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12

最新評(píng)論