<p>
1 做一個記事本,首先我們要想好它的布局。</p><p>2.選擇一些可能用到的圖檔。</p><p>3.下面看一個完整的記事本代碼。</p><div>
</div>
package big;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
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.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.JToolBar;
//import com.sun.prism.paint.Color;
class TextEditorFrame extends JFrame {
File file = null;
Color color = Color.RED;
// 這是用來做文本框的
JTextPane text = new JTextPane();
// 檔案選擇框
JFileChooser filechooser = new JFileChooser();
JColorChooser coloechooser = new JColorChooser();
// 關于對話框
JDialog about = new JDialog(this);
// 菜單
JMenuBar menubar = new JMenuBar();
JMenu[] menus = new JMenu[] { new JMenu("檔案"), new JMenu("編輯"),
new JMenu("幫助") };
JMenuItem menuitems[][] = new JMenuItem[][]
{
{ new JMenuItem("建立"), new JMenuItem("打開"), new JMenuItem("儲存"),
new JMenuItem("退出") },
{ new JMenuItem("複制"), new JMenuItem("剪切"), new JMenuItem("粘貼"),
new JMenuItem("顔色") }, { new JMenuItem("關于") }
};
TextEditorFrame(String title) {
initTextPane();
initAboutDialog();
initToolBar();
initMenu();
this.setDefaultCloseOperation(this.DO_NOTHING_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
int n = JOptionPane.showConfirmDialog(null, "确認關閉嗎?", "确認關閉框",
JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.YES_OPTION) {
System.out.println(n);
System.exit(0);
}
else if (n == JOptionPane.NO_OPTION) {
return;
}
}
});
}
void initTextPane() {
getContentPane().add(new JScrollPane(text));
}
void initMenu() {
for (int i = 0; i < menus.length; i++) {
menubar.add(menus[i]);
for (int j = 0; j < menuitems[i].length; j++) {
menus[i].add(menuitems[i][j]);
menuitems[i][j].addActionListener(action);
}
}
this.setJMenuBar(menubar);
}
ActionListener action = new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent arg0) {
// TODO Auto-generated method stub
JMenuItem mi = (JMenuItem) arg0.getSource();
String id = mi.getText();
if(id.equals("建立"))
{
text.setText("");
file=null;
}
else if (id.equals("打開")) {
if (file != null)
filechooser.setSelectedFile(file);
int returnVal = filechooser
.showOpenDialog(TextEditorFrame.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = filechooser.getSelectedFile();
openFile();
}
} else if (id.equals("儲存")) {
if (file != null)
filechooser.setSelectedFile(file);
int returnVal = filechooser
.showSaveDialog(TextEditorFrame.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = filechooser.getSelectedFile();
saveFile();
}
} else if (id.equals("退出")) {
int n = JOptionPane.showConfirmDialog(null, "确認關閉嗎?", "确認關閉框",
JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.YES_OPTION) {
System.exit(0);
} else if (n == JOptionPane.NO_OPTION) {
return;
}
} else if (id.equals("剪切")) {
text.cut();
} else if (id.equals("複制")) {
text.copy();
} else if (id.equals("粘貼")) {
text.paste();
} else if (id.equals("color")) {
color = JColorChooser.showDialog(TextEditorFrame.this, "",
color);
text.setForeground(color);
} else if (id.equals("關于")) {
about.setSize(200, 150);
}
}
};
void saveFile() {
try {
FileWriter fw = new FileWriter(file);
fw.write(text.getText());
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
void openFile() {
try {
FileReader fr = new FileReader(file);
int len = (int) file.length();
char[] buffer = new char[len];
fr.read(buffer, 0, len);
fr.close();
text.setText(new String(buffer));
} catch (Exception e) {
e.printStackTrace();
}
}
void initAboutDialog() {
about.getContentPane().add(new JLabel("傳到Java,你進步了嗎?"));
about.setModal(true);
about.setSize(200, 100);
}
// 我來加上工具條
JToolBar toolbar = new JToolBar();
JButton[] buttons = new JButton[] {
new JButton("", new ImageIcon("qin.jpg")),
new JButton("", new ImageIcon("shu.jpg")),
new JButton("", new ImageIcon("xin.jpg")) };
void initToolBar() {
for (int i = 0; i < buttons.length; i++)
toolbar.add(buttons[i]);
buttons[0].setToolTipText("複制");
buttons[0].addActionListener(new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent arg0) {
// TODO Auto-generated method stub
text.copy();
}
});
buttons[1].setToolTipText("剪切");
buttons[1].addActionListener(new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent arg0) {
// TODO Auto-generated method stub
text.cut();
}
});
buttons[2].setToolTipText("粘貼");
buttons[2].addActionListener(new ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent arg0) {
// TODO Auto-generated method stub
text.paste();
}
});
this.getContentPane().add(toolbar, BorderLayout.NORTH);
}
}
public class F {
public static void main(String[] args) {
TextEditorFrame f = new TextEditorFrame("NoteBook");
f.setTitle("hzy記事本");
f.setSize(800, 600);
f.setVisible(true);
}
}