java statebar_JFrame+Spring学习

package com.paul.ui;

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.Font;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.InputEvent;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import javax.swing.BorderFactory;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPopupMenu;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.KeyStroke;

import javax.swing.ScrollPaneConstants;

import javax.swing.SwingConstants;

@Named

public class JNotePadUI extends JFrame {

private static final long serialVersionUID = -7584732501149961175L;

private JMenuItem menuOpen;

private JMenuItem menuSave;

private JMenuItem menuSaveAs;

private JMenuItem menuClose;

private JMenuItem menuCut;

private JMenuItem menuCopy;

private JMenuItem menuPaste;

private JMenuItem menuAbout;

private JTextArea textArea;

private JMenu editMenu;

private JPopupMenu popUpMenu;

private JLabel stateBar;

private JFileChooser fileChooser;

public JNotePadUI() {

super("新增文字檔案");

setUpUIComponent();

setUpEventListener();

setVisible(true);

}

private void setUpUIComponent() {

setSize(640, 480);

//選單列        JMenuBar menuBar = new JMenuBar();

//設置「檔案」選單        JMenu fileMenu = new JMenu("檔案");

menuOpen = new JMenuItem("開啟舊檔");

//快速鍵設置        menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,

InputEvent.CTRL_MASK));

menuSave = new JMenuItem("儲存檔案");

menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,

InputEvent.CTRL_MASK));

menuSaveAs = new JMenuItem("另存新檔");

menuClose = new JMenuItem("關閉");

menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,

InputEvent.CTRL_MASK));

fileMenu.add(menuOpen);

fileMenu.addSeparator(); //分隔線        fileMenu.add(menuSave);

fileMenu.add(menuSaveAs);

fileMenu.addSeparator(); //分隔線        fileMenu.add(menuClose);

//設置「編輯」選單        editMenu = new JMenu("編輯");

menuCut = new JMenuItem("剪下");

menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,

InputEvent.CTRL_MASK));

menuCopy = new JMenuItem("複製");

menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,

InputEvent.CTRL_MASK));

menuPaste = new JMenuItem("貼上");

menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,

InputEvent.CTRL_MASK));

editMenu.add(menuCut);

editMenu.add(menuCopy);

editMenu.add(menuPaste);

//設置「關於」選單        JMenu aboutMenu = new JMenu("關於");

menuAbout = new JMenuItem("關於 JNotePad");

aboutMenu.add(menuAbout);

menuBar.add(fileMenu);

menuBar.add(editMenu);

menuBar.add(aboutMenu);

//設置選單列        setJMenuBar(menuBar);

//文字編輯區域        textArea = new JTextArea();

textArea.setFont(new Font("細明體", Font.PLAIN, 16));

textArea.setLineWrap(true);

JScrollPane panel = new JScrollPane(textArea,

ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

Container contentPane = getContentPane();

contentPane.add(panel, BorderLayout.CENTER);

//狀態列        stateBar = new JLabel("未修改");

stateBar.setHorizontalAlignment(SwingConstants.LEFT);

stateBar.setBorder(BorderFactory.createEtchedBorder());

contentPane.add(stateBar, BorderLayout.SOUTH);

popUpMenu = editMenu.getPopupMenu();

fileChooser = new JFileChooser();

}

private void setUpEventListener() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//按下視窗關閉鈕事件處理        addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

closeFile();

}

});

//選單 - 開啟舊檔        menuOpen.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

openFile();

}

});

//選單 - 儲存檔案        menuSave.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

saveFile();

}

});

//選單 - 另存新檔        menuSaveAs.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

saveFileAs();

}

});

//選單 - 關閉檔案        menuClose.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

closeFile();

}

});

//選單 - 剪下        menuCut.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

cut();

}

});

//選單 - 複製        menuCopy.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

copy();

}

});

//選單 - 貼上        menuPaste.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

paste();

}

});

//選單 - 關於        menuAbout.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

//顯示對話方塊                JOptionPane.showOptionDialog(null, "程式名稱:\n JNotePad \n"

+ "程式設計:\n 良葛格\n" + "簡介:\n 一個簡單的文字編輯器\n"

+ " 可作為驗收 Java的實作對象\n" + " 歡迎網友下載研究交流\n\n"

+ "http://caterpillar.onlyfun.net/", "關於 JNotePad",

JOptionPane.DEFAULT_OPTION,

JOptionPane.INFORMATION_MESSAGE, null, null, null);

}

});

//編輯區鍵盤事件        textArea.addKeyListener(new KeyAdapter() {

public void keyTyped(KeyEvent e) {

processTextArea();

}

});

//編輯區滑鼠事件        textArea.addMouseListener(new MouseAdapter() {

public void mouseReleased(MouseEvent e) {

if (e.getButton() == MouseEvent.BUTTON3)

popUpMenu.show(editMenu, e.getX(), e.getY());

}

public void mouseClicked(MouseEvent e) {

if (e.getButton() == MouseEvent.BUTTON1)

popUpMenu.setVisible(false);

}

});

}

private void openFile() {

if (isCurrentFileSaved()) { //文件是否為儲存狀態            open(); //開啟舊檔        } else {

//顯示對話方塊            int option = JOptionPane.showConfirmDialog(null, "檔案已修改,是否儲存?",

"儲存檔案?", JOptionPane.YES_NO_OPTION,

JOptionPane.WARNING_MESSAGE, null);

switch (option) {

//確認檔案儲存            case JOptionPane.YES_OPTION:

saveFile(); //儲存檔案                break;

//放棄檔案儲存            case JOptionPane.NO_OPTION:

open();

break;

}

}

}

private void open() {

//fileChooser 是 JFileChooser 的實例//顯示檔案選取的對話方塊        int option = fileChooser.showDialog(null, null);

//使用者按下確認鍵        if (option == JFileChooser.APPROVE_OPTION) {

try {

//開啟選取的檔案                BufferedReader buf = new BufferedReader(new FileReader(

fileChooser.getSelectedFile()));

//設定文件標題                setTitle(fileChooser.getSelectedFile().toString());

//清除前一次文件                textArea.setText("");

//設定狀態列                stateBar.setText("未修改");

//取得系統相依的換行字元                String lineSeparator = System.getProperty("line.separator");

//讀取檔案並附加至文字編輯區                String text;

while ((text = buf.readLine()) != null) {

textArea.append(text);

textArea.append(lineSeparator);

}

buf.close();

} catch (IOException e) {

JOptionPane.showMessageDialog(null, e.toString(), "開啟檔案失敗",

JOptionPane.ERROR_MESSAGE);

}

}

}

private boolean isCurrentFileSaved() {

if (stateBar.getText().equals("未修改")) {

return false;

} else {

return true;

}

}

private void saveFile() {

//從標題列取得檔案名稱        File file = new File(getTitle());

//若指定的檔案不存在        if (!file.exists()) {

//執行另存新檔            saveFileAs();

} else {

try {

//開啟指定的檔案                BufferedWriter buf = new BufferedWriter(new FileWriter(file));

//將文字編輯區的文字寫入檔案                buf.write(textArea.getText());

buf.close();

//設定狀態列為未修改                stateBar.setText("未修改");

} catch (IOException e) {

JOptionPane.showMessageDialog(null, e.toString(), "寫入檔案失敗",

JOptionPane.ERROR_MESSAGE);

}

}

}

private void saveFileAs() {

//顯示檔案對話方塊        int option = fileChooser.showDialog(null, null);

//如果確認選取檔案        if (option == JFileChooser.APPROVE_OPTION) {

//取得選擇的檔案            File file = fileChooser.getSelectedFile();

//在標題列上設定檔案名稱            setTitle(file.toString());

try {

//建立檔案                file.createNewFile();

//進行檔案儲存                saveFile();

} catch (IOException e) {

JOptionPane.showMessageDialog(null, e.toString(), "無法建立新檔",

JOptionPane.ERROR_MESSAGE);

}

}

}

private void closeFile() {

//是否已儲存文件19-36        if (isCurrentFileSaved()) {

//釋放視窗資源,而後關閉程式            dispose();

} else {

int option = JOptionPane.showConfirmDialog(null, "檔案已修改,是否儲存?",

"儲存檔案?", JOptionPane.YES_NO_OPTION,

JOptionPane.WARNING_MESSAGE, null);

switch (option) {

case JOptionPane.YES_OPTION:

saveFile();

break;

case JOptionPane.NO_OPTION:

dispose();

}

}

}

private void cut() {

textArea.cut();

stateBar.setText("已修改");

popUpMenu.setVisible(false);

}

private void copy() {

textArea.copy();

popUpMenu.setVisible(false);

}

private void paste() {

textArea.paste();

stateBar.setText("已修改");

popUpMenu.setVisible(false);

}

private void processTextArea() {

stateBar.setText("已修改");

}

public static void main(String[] args) {

new JNotePadUI();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值