关于JAVA的问题。求教达人
我下了个画板程序WBApplet.java具有画笔功能。想放入下面程序空出来的画板区域。求教!importjava.awt.*;importjavax.swing.*;i...
我下了个画板程序 WBApplet.java具有画笔功能。想放入下面程序空出来的画板区域。求教!
import java.awt.*;
import javax.swing.*;
import java.io.*;
public class model extends JFrame implements Serializable{
JMenu file,edit,help;
JMenuItem neww, save,open,exit,cut,copy,paste,helpTheme;
JPopupMenu pen=new JPopupMenu();
JMenuItem huabi=new JMenuItem("画笔");
JMenuItem zhixian=new JMenuItem("直线");
JMenuItem yuanxing=new JMenuItem("圆形");
JMenuItem juxing=new JMenuItem("矩形");
JLabel status=new JLabel("画板区域");
public model(){
file=new JMenu("文件");
edit=new JMenu("编辑");
help=new JMenu("帮助");
neww=new JMenuItem("新建(N)");
save=new JMenuItem("保存(S)");
open=new JMenuItem("打开(O)");
exit=new JMenuItem("退出(Q)");
cut=new JMenuItem("剪切");
copy=new JMenuItem("复制");
paste=new JMenuItem("粘贴");
helpTheme= new JMenuItem("帮助主题");
edit.add(cut);
edit.add(copy);
edit.add(paste);
help.add(helpTheme);
file.add(neww);
file.add(save);
file.add(open);
file.add(new JSeparator());
file.add(exit);
JMenuBar bar=new JMenuBar();
setJMenuBar(bar);
bar.add(file);
bar.add(edit);
bar.add(help);
JTabbedPane tabs=new JTabbedPane();
tabs.addTab("电子白板",status);
tabs.setPreferredSize(new Dimension(600,500));
JPanel baiban=new JPanel(new BorderLayout());
baiban.add("Center",tabs);
getContentPane().setLayout(new BorderLayout());
getContentPane().add("North",bar);
getContentPane().add("Center",baiban);
validate();pack();setVisible(true);
}
public static void main(String args[]){
model m=new model();
}
} 展开
import java.awt.*;
import javax.swing.*;
import java.io.*;
public class model extends JFrame implements Serializable{
JMenu file,edit,help;
JMenuItem neww, save,open,exit,cut,copy,paste,helpTheme;
JPopupMenu pen=new JPopupMenu();
JMenuItem huabi=new JMenuItem("画笔");
JMenuItem zhixian=new JMenuItem("直线");
JMenuItem yuanxing=new JMenuItem("圆形");
JMenuItem juxing=new JMenuItem("矩形");
JLabel status=new JLabel("画板区域");
public model(){
file=new JMenu("文件");
edit=new JMenu("编辑");
help=new JMenu("帮助");
neww=new JMenuItem("新建(N)");
save=new JMenuItem("保存(S)");
open=new JMenuItem("打开(O)");
exit=new JMenuItem("退出(Q)");
cut=new JMenuItem("剪切");
copy=new JMenuItem("复制");
paste=new JMenuItem("粘贴");
helpTheme= new JMenuItem("帮助主题");
edit.add(cut);
edit.add(copy);
edit.add(paste);
help.add(helpTheme);
file.add(neww);
file.add(save);
file.add(open);
file.add(new JSeparator());
file.add(exit);
JMenuBar bar=new JMenuBar();
setJMenuBar(bar);
bar.add(file);
bar.add(edit);
bar.add(help);
JTabbedPane tabs=new JTabbedPane();
tabs.addTab("电子白板",status);
tabs.setPreferredSize(new Dimension(600,500));
JPanel baiban=new JPanel(new BorderLayout());
baiban.add("Center",tabs);
getContentPane().setLayout(new BorderLayout());
getContentPane().add("North",bar);
getContentPane().add("Center",baiban);
validate();pack();setVisible(true);
}
public static void main(String args[]){
model m=new model();
}
} 展开
2个回答
展开全部
你这个还没有注册监听之类的吧...所以按了都没有反应
我这里有个我写的记事本程序你可以看看...不懂的在交流..我QQ718596512
/**
* 记事本程序
* 打开,保存支持的文件
* 可以使用快捷键操作(JMenu项是ALT+字母)
* 可以修改背景色,设置字体大小,种类
* 为JMenuItem添加快捷键JmenuItem jmi=new JmenuItem("打开",'O');
* 键盘加速器即在不打开菜单的情况下自行打开相应菜单项的功能
* jmi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
* 实现格式即字体窗格(JColorChooser,JSlider)
* 使用到
* JMenuBar JMenu JMenuItem JTextArea JScrollPane
* UIManager JFileChooser FileInputStream FileOutPutStream
* FileFilter(javax.swing.filechooser.FileFilter 另外是java.io中的一个接口)
* 实现弹出菜单JPopupMenu使用鼠标适配器 类实现(MouseAdapter)
* 没有实现查找--虽然查找很简单但是要将它在jta中定位貌似不好搞
*/
package com.happy;
import javax.swing.*;
import javax.swing.border.TitledBorder;
//注意这个包是必须的
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.filechooser.FileFilter;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.event.MouseAdapter;
public class NotePadWin extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
//数据成员
JMenuBar jmb=null;
JMenu jm1=null;//文件
JMenu jm2=null;//编辑
JMenu jm3=null;//格式
JMenu jm4=null;//帮助
JPopupMenu jpm=null;
JMenuItem jmi1=null;
JMenuItem jmi2=null;
JMenuItem jmi3=null;
JMenuItem jmi33=null;
JMenuItem jmi4=null;
JMenuItem jmi44=null;
JMenuItem jmi5=null;
JMenuItem jmi6=null;
JMenuItem jmi7=null;
JMenuItem jmi8=null;
JMenuItem jmi9=null;
JMenuItem jmi99=null;
JMenuItem jmi10=null;
static JTextArea jta=null;
JScrollPane jsp=null;
JFileChooser jfc=null;
//记录当前文本内容
StringBuffer con=null;
FontWin fw=null;
public NotePadWin(){
//实例化
jmb=new JMenuBar();
jm1=new JMenu("文件(F)");
jm2=new JMenu("编辑(Z)");
jm3=new JMenu("格式(G)");
jm4=new JMenu("帮助(H)");
//添加快捷键
jm1.setMnemonic('F');
jm2.setMnemonic('Z');
jm3.setMnemonic('G');
jm4.setMnemonic('H');
//这样的快捷键必须打开菜单才有效
jmi1=new JMenuItem("新建(N)",'N');
jmi2=new JMenuItem("打开(O)",'O');
jmi3=new JMenuItem("保存(S)",'S');
jmi33=new JMenuItem("保存(S)");
jmi4=new JMenuItem("退出(E)",'E');
jmi44=new JMenuItem("退出(E)");
//设置键盘加速器
jmi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
jmi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
jmi3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
jmi4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
jm1.add(jmi1);
jm1.add(jmi2);
jm1.add(jmi3);
// 添加分隔线
jm1.addSeparator();
jm1.add(jmi4);
jmi5=new JMenuItem("查找");
jmi6=new JMenuItem("全选");
jm2.add(jmi5);
jm2.add(jmi6);
jmi7=new JMenuItem("帮助主题");
jmi7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
jmi8=new JMenuItem("关于");
jm4.add(jmi7);
jm4.add(jmi8);
jmi9=new JMenuItem("字体");
jmi99=new JMenuItem("字体");
jm3.add(jmi9);
jmb.add(jm1);
jmb.add(jm2);
jmb.add(jm3);
jmb.add(jm4);
jpm=new JPopupMenu();
jpm.add(jmi33);
jpm.add(jmi99);
jpm.add(jmi44);
jta=new JTextArea();
jta.setBorder(new TitledBorder("文本域"));
//添加鼠标适配器
jta.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
if(e.getButton()==MouseEvent.BUTTON3){
System.out.println("ff");
jpm.show(e.getComponent(), e.getX(), e.getY());
}
}
});
jsp=new JScrollPane(jta,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jfc=new JFileChooser();
//添加文件过滤器
jfc.addChoosableFileFilter(new MyFileFilter("java"));
jfc.addChoosableFileFilter(new MyFileFilter("txt"));
jfc.addChoosableFileFilter(new MyFileFilter("c"));
jfc.addChoosableFileFilter(new MyFileFilter("cpp"));
jfc.addChoosableFileFilter(new MyFileFilter("lrc"));
jfc.addChoosableFileFilter(new MyFileFilter("h"));
//注册监听器
jmi1.addActionListener(this);
jmi2.addActionListener(this);
jmi3.addActionListener(this);
jmi33.addActionListener(this);
jmi4.addActionListener(this);
jmi44.addActionListener(this);
jmi5.addActionListener(this);
jmi6.addActionListener(this);
jmi7.addActionListener(this);
jmi8.addActionListener(this);
jmi9.addActionListener(this);
jmi99.addActionListener(this);
//添加菜单栏和文本域
this.setJMenuBar(jmb);
this.add(jsp);
}
//主函数
public static void main(String[] args) {
// TODO Auto-generated method stub
//设置当前程序的UI
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
NotePadWin notepad=new NotePadWin();
notepad.setSize(400,300);
notepad.setTitle("我的记事本");
notepad.setVisible(true);
notepad.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
//事件处理函数
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JMenuItem t=(JMenuItem)e.getSource();
//处理新建
if(t==jmi1){
newFile();
}
//打开
if(t==jmi2){
openFile();
}
//保存文件
if(t==jmi3||t==jmi33){
saveFile();
}
//退出
if(t==jmi4||t==jmi44){
myExit();
}
//帮助
if(t==jmi7){
JOptionPane.showMessageDialog(null, "这个记事本可以打开基本的文本文件\n"
+"包括*.java,*.class,*.cpp,*.h,*.lrc,*.txt\n"
+"为了避免与系统热键冲突对于全选.复制.粘贴等没有实现");
}
//关于
if(t==jmi8){
JOptionPane.showMessageDialog(null, "一个简单的记事本\n"
+"仅供学习研究之用\n"+"作者:高兴亮 \n"+"2010-11-30");
}
//字体
if(t==jmi9||t==jmi99){
fontSet();
}
}
public void saveFile(){
File file=null;
int flag=jfc.showSaveDialog(this);
jfc.setApproveButtonText("保存");
jfc.setDialogTitle("保存文件.....");
FileOutputStream fos=null;
if(flag==JFileChooser.APPROVE_OPTION){
file=jfc.getSelectedFile();
try {
fos=new FileOutputStream(file);
try {
fos.write(jta.getText().getBytes());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
if(fos!=null){
try {
fos.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
}
public void openFile(){
String str=null;
File file=null;
jfc.setApproveButtonText("确定");
jfc.setDialogTitle("打开文件....");
FileInputStream fis=null;
//打开窗口.返回值
int flag=jfc.showOpenDialog(this);
//打开文件
if(flag==JFileChooser.APPROVE_OPTION){
file=jfc.getSelectedFile();
String name=file.getName().substring(file.getName().lastIndexOf('.')+1).toLowerCase();
//约束打开文件类型
if(name.equals("java")||name.equals("txt")||name.equals("h")
||name.equals("lrc")||name.equals("cpp")||name.equals("class")){
//得到文件内容
try {
fis=new FileInputStream(file);
byte buf[]=new byte[1024];
int n=0;
try {
while((n=fis.read(buf))!=-1){
str+=new String(buf,0,n);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
jta.setText(str);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
if(fis!=null){
try {
fis.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
}else{
//test
System.out.println("未打开文件");
}
}
public void fontSet(){
fw=new FontWin();
}
public void myExit(){
//文本域有内容
if(jta.getText().length()!=0){
int ii=JOptionPane.showConfirmDialog(null, "是否保存文件");
//用户选择是
if(ii==0){
saveFile();
System.exit(0);
}else if(ii==1){
System.exit(0);
}else{
System.exit(0);
}
}else{
System.exit(0);
}
}
public void newFile(){
//文本域有内容
if(jta.getText().length()!=0){
int ii=JOptionPane.showConfirmDialog(null, "是否保存文件");
//用户选择是
if(ii==0){
saveFile();
}else if(ii==1){
jta.setText("");
}else{
System.out.println("error");
}
}
}
}
//我的文件过滤器实现对打开文件的限制
class MyFileFilter extends FileFilter{
//文件后缀
String str;
public MyFileFilter(String str) {
super();
this.str = str;
}
//当目录里面的文件与要求的相同时返回true,并将该文件显示在文件对话框中
@Override
public boolean accept(File file) {
// TODO Auto-generated method stub
//如果文件是目录
if(file.isDirectory()){
return true;
}
String fileName=file.getName();
if(fileName.substring(fileName.lastIndexOf('.')+1).equalsIgnoreCase(str)){
return true;
}
return false;
}
//返回描述文件对应的描述
public String getDescription(){
String des=new String();
if(str.equalsIgnoreCase("java")){
des="java file";
}else if(str.equalsIgnoreCase("class")){
des="java class file";
}else if(str.equalsIgnoreCase("txt")){
des="text file";
}else if(str.equalsIgnoreCase("cpp")){
des="c++ file";
}else if(str.equalsIgnoreCase("h")){
des="c/c++ header file";
}else if(str.equalsIgnoreCase("lrc")){
des="lrc file";
}else
des="";
return des;
}
}
//字体控制窗口
class FontWin extends JFrame implements ActionListener,ChangeListener{
//字体种类
JComboBox jcb=null;
//颜色(文本域的颜色)
JColorChooser jcc=null;
//字体大小
JSlider js=null;
//示例
JTextArea jta=null;
JScrollPane jsp=null;
//控制按钮
JButton jbt1=null;
JButton jbt2=null;
JButton jbt3=null;
String[] fonts=null;
//定义此次操作是否有效
Font curFont=null;
Color color=new Color(0);
public FontWin(){
//初始化字体种类
GraphicsEnvironment e=GraphicsEnvironment.getLocalGraphicsEnvironment();
fonts=e.getAvailableFontFamilyNames();
jcb=new JComboBox(fonts);
jcb.addActionListener(this);
//初始化Jcc
//jcc=new JColorChooser(Color.white);
//color=jcc.showDialog(jf, "颜色选择器", Color.white);
jbt1=new JButton("确定");
jbt2=new JButton("取消");
jbt3=new JButton("颜色选择器");
jbt1.addActionListener(this);
jbt2.addActionListener(this);
jbt3.addActionListener(this);
jta=new JTextArea(30,30);
jta.setText("我的记事本\n"+"my notepad");
jta.setEditable(true);
jta.setBorder(new TitledBorder("示例"));
jsp=new JScrollPane(jta,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//字体大小在10-50
js=new JSlider(10,50);
js.setMajorTickSpacing(10);
js.setMinorTickSpacing(1);
js.setPaintTicks(true);
js.setPaintLabels(true);
//滑到整数附近
js.setSnapToTicks(true);
js.addChangeListener(this);
JPanel jpa1=new JPanel();
jpa1.add(jcb);
jpa1.add(js);
JPanel jpa2=new JPanel();
jpa2.add(jbt3);
jpa2.add(jbt1);
jpa2.add(jbt2);
JPanel jpa3=new JPanel();
jpa3.add(jsp,BorderLayout.CENTER);
this.add(jpa1,BorderLayout.NORTH);
this.add(jpa3,BorderLayout.CENTER);
this.add(jpa2,BorderLayout.SOUTH);
this.setSize(400, 200);
this.setLocation(200, 200);
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setTitle("字体选择器");
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jcb){
String curFontName=(String)jcb.getSelectedItem();
int curFontSize=js.getValue();
Font f=new Font(curFontName,Font.PLAIN,curFontSize);
jta.setFont(f);
}
//颜色选择器
if(e.getSource()==jbt3){
jcc=new JColorChooser(Color.white);
color=JColorChooser.showDialog(this, "颜色选择器", Color.white);
jta.setBackground(color);
}
if(e.getSource()==jbt1){
String curFontName=(String)jcb.getSelectedItem();
int curFontSize=js.getValue();
curFont=new Font(curFontName,Font.PLAIN,curFontSize);
//color=color;
NotePadWin.jta.setFont(curFont);
NotePadWin.jta.setBackground(color);
this.dispose();
}
if(e.getSource()==jbt2){
this.dispose();
}
}
//js
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==js){
String curFontName=(String)jcb.getSelectedItem();
int curFontSize=js.getValue();
Font f=new Font(curFontName,Font.PLAIN,curFontSize);
jta.setFont(f);
}
}
public Font getCurFont() {
return curFont;
}
public Color getColor() {
return color;
}
}
我这里有个我写的记事本程序你可以看看...不懂的在交流..我QQ718596512
/**
* 记事本程序
* 打开,保存支持的文件
* 可以使用快捷键操作(JMenu项是ALT+字母)
* 可以修改背景色,设置字体大小,种类
* 为JMenuItem添加快捷键JmenuItem jmi=new JmenuItem("打开",'O');
* 键盘加速器即在不打开菜单的情况下自行打开相应菜单项的功能
* jmi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
* 实现格式即字体窗格(JColorChooser,JSlider)
* 使用到
* JMenuBar JMenu JMenuItem JTextArea JScrollPane
* UIManager JFileChooser FileInputStream FileOutPutStream
* FileFilter(javax.swing.filechooser.FileFilter 另外是java.io中的一个接口)
* 实现弹出菜单JPopupMenu使用鼠标适配器 类实现(MouseAdapter)
* 没有实现查找--虽然查找很简单但是要将它在jta中定位貌似不好搞
*/
package com.happy;
import javax.swing.*;
import javax.swing.border.TitledBorder;
//注意这个包是必须的
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.filechooser.FileFilter;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.event.MouseAdapter;
public class NotePadWin extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
//数据成员
JMenuBar jmb=null;
JMenu jm1=null;//文件
JMenu jm2=null;//编辑
JMenu jm3=null;//格式
JMenu jm4=null;//帮助
JPopupMenu jpm=null;
JMenuItem jmi1=null;
JMenuItem jmi2=null;
JMenuItem jmi3=null;
JMenuItem jmi33=null;
JMenuItem jmi4=null;
JMenuItem jmi44=null;
JMenuItem jmi5=null;
JMenuItem jmi6=null;
JMenuItem jmi7=null;
JMenuItem jmi8=null;
JMenuItem jmi9=null;
JMenuItem jmi99=null;
JMenuItem jmi10=null;
static JTextArea jta=null;
JScrollPane jsp=null;
JFileChooser jfc=null;
//记录当前文本内容
StringBuffer con=null;
FontWin fw=null;
public NotePadWin(){
//实例化
jmb=new JMenuBar();
jm1=new JMenu("文件(F)");
jm2=new JMenu("编辑(Z)");
jm3=new JMenu("格式(G)");
jm4=new JMenu("帮助(H)");
//添加快捷键
jm1.setMnemonic('F');
jm2.setMnemonic('Z');
jm3.setMnemonic('G');
jm4.setMnemonic('H');
//这样的快捷键必须打开菜单才有效
jmi1=new JMenuItem("新建(N)",'N');
jmi2=new JMenuItem("打开(O)",'O');
jmi3=new JMenuItem("保存(S)",'S');
jmi33=new JMenuItem("保存(S)");
jmi4=new JMenuItem("退出(E)",'E');
jmi44=new JMenuItem("退出(E)");
//设置键盘加速器
jmi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
jmi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
jmi3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
jmi4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
jm1.add(jmi1);
jm1.add(jmi2);
jm1.add(jmi3);
// 添加分隔线
jm1.addSeparator();
jm1.add(jmi4);
jmi5=new JMenuItem("查找");
jmi6=new JMenuItem("全选");
jm2.add(jmi5);
jm2.add(jmi6);
jmi7=new JMenuItem("帮助主题");
jmi7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
jmi8=new JMenuItem("关于");
jm4.add(jmi7);
jm4.add(jmi8);
jmi9=new JMenuItem("字体");
jmi99=new JMenuItem("字体");
jm3.add(jmi9);
jmb.add(jm1);
jmb.add(jm2);
jmb.add(jm3);
jmb.add(jm4);
jpm=new JPopupMenu();
jpm.add(jmi33);
jpm.add(jmi99);
jpm.add(jmi44);
jta=new JTextArea();
jta.setBorder(new TitledBorder("文本域"));
//添加鼠标适配器
jta.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
if(e.getButton()==MouseEvent.BUTTON3){
System.out.println("ff");
jpm.show(e.getComponent(), e.getX(), e.getY());
}
}
});
jsp=new JScrollPane(jta,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jfc=new JFileChooser();
//添加文件过滤器
jfc.addChoosableFileFilter(new MyFileFilter("java"));
jfc.addChoosableFileFilter(new MyFileFilter("txt"));
jfc.addChoosableFileFilter(new MyFileFilter("c"));
jfc.addChoosableFileFilter(new MyFileFilter("cpp"));
jfc.addChoosableFileFilter(new MyFileFilter("lrc"));
jfc.addChoosableFileFilter(new MyFileFilter("h"));
//注册监听器
jmi1.addActionListener(this);
jmi2.addActionListener(this);
jmi3.addActionListener(this);
jmi33.addActionListener(this);
jmi4.addActionListener(this);
jmi44.addActionListener(this);
jmi5.addActionListener(this);
jmi6.addActionListener(this);
jmi7.addActionListener(this);
jmi8.addActionListener(this);
jmi9.addActionListener(this);
jmi99.addActionListener(this);
//添加菜单栏和文本域
this.setJMenuBar(jmb);
this.add(jsp);
}
//主函数
public static void main(String[] args) {
// TODO Auto-generated method stub
//设置当前程序的UI
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
NotePadWin notepad=new NotePadWin();
notepad.setSize(400,300);
notepad.setTitle("我的记事本");
notepad.setVisible(true);
notepad.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
//事件处理函数
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JMenuItem t=(JMenuItem)e.getSource();
//处理新建
if(t==jmi1){
newFile();
}
//打开
if(t==jmi2){
openFile();
}
//保存文件
if(t==jmi3||t==jmi33){
saveFile();
}
//退出
if(t==jmi4||t==jmi44){
myExit();
}
//帮助
if(t==jmi7){
JOptionPane.showMessageDialog(null, "这个记事本可以打开基本的文本文件\n"
+"包括*.java,*.class,*.cpp,*.h,*.lrc,*.txt\n"
+"为了避免与系统热键冲突对于全选.复制.粘贴等没有实现");
}
//关于
if(t==jmi8){
JOptionPane.showMessageDialog(null, "一个简单的记事本\n"
+"仅供学习研究之用\n"+"作者:高兴亮 \n"+"2010-11-30");
}
//字体
if(t==jmi9||t==jmi99){
fontSet();
}
}
public void saveFile(){
File file=null;
int flag=jfc.showSaveDialog(this);
jfc.setApproveButtonText("保存");
jfc.setDialogTitle("保存文件.....");
FileOutputStream fos=null;
if(flag==JFileChooser.APPROVE_OPTION){
file=jfc.getSelectedFile();
try {
fos=new FileOutputStream(file);
try {
fos.write(jta.getText().getBytes());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
if(fos!=null){
try {
fos.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
}
public void openFile(){
String str=null;
File file=null;
jfc.setApproveButtonText("确定");
jfc.setDialogTitle("打开文件....");
FileInputStream fis=null;
//打开窗口.返回值
int flag=jfc.showOpenDialog(this);
//打开文件
if(flag==JFileChooser.APPROVE_OPTION){
file=jfc.getSelectedFile();
String name=file.getName().substring(file.getName().lastIndexOf('.')+1).toLowerCase();
//约束打开文件类型
if(name.equals("java")||name.equals("txt")||name.equals("h")
||name.equals("lrc")||name.equals("cpp")||name.equals("class")){
//得到文件内容
try {
fis=new FileInputStream(file);
byte buf[]=new byte[1024];
int n=0;
try {
while((n=fis.read(buf))!=-1){
str+=new String(buf,0,n);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
jta.setText(str);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
if(fis!=null){
try {
fis.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
}else{
//test
System.out.println("未打开文件");
}
}
public void fontSet(){
fw=new FontWin();
}
public void myExit(){
//文本域有内容
if(jta.getText().length()!=0){
int ii=JOptionPane.showConfirmDialog(null, "是否保存文件");
//用户选择是
if(ii==0){
saveFile();
System.exit(0);
}else if(ii==1){
System.exit(0);
}else{
System.exit(0);
}
}else{
System.exit(0);
}
}
public void newFile(){
//文本域有内容
if(jta.getText().length()!=0){
int ii=JOptionPane.showConfirmDialog(null, "是否保存文件");
//用户选择是
if(ii==0){
saveFile();
}else if(ii==1){
jta.setText("");
}else{
System.out.println("error");
}
}
}
}
//我的文件过滤器实现对打开文件的限制
class MyFileFilter extends FileFilter{
//文件后缀
String str;
public MyFileFilter(String str) {
super();
this.str = str;
}
//当目录里面的文件与要求的相同时返回true,并将该文件显示在文件对话框中
@Override
public boolean accept(File file) {
// TODO Auto-generated method stub
//如果文件是目录
if(file.isDirectory()){
return true;
}
String fileName=file.getName();
if(fileName.substring(fileName.lastIndexOf('.')+1).equalsIgnoreCase(str)){
return true;
}
return false;
}
//返回描述文件对应的描述
public String getDescription(){
String des=new String();
if(str.equalsIgnoreCase("java")){
des="java file";
}else if(str.equalsIgnoreCase("class")){
des="java class file";
}else if(str.equalsIgnoreCase("txt")){
des="text file";
}else if(str.equalsIgnoreCase("cpp")){
des="c++ file";
}else if(str.equalsIgnoreCase("h")){
des="c/c++ header file";
}else if(str.equalsIgnoreCase("lrc")){
des="lrc file";
}else
des="";
return des;
}
}
//字体控制窗口
class FontWin extends JFrame implements ActionListener,ChangeListener{
//字体种类
JComboBox jcb=null;
//颜色(文本域的颜色)
JColorChooser jcc=null;
//字体大小
JSlider js=null;
//示例
JTextArea jta=null;
JScrollPane jsp=null;
//控制按钮
JButton jbt1=null;
JButton jbt2=null;
JButton jbt3=null;
String[] fonts=null;
//定义此次操作是否有效
Font curFont=null;
Color color=new Color(0);
public FontWin(){
//初始化字体种类
GraphicsEnvironment e=GraphicsEnvironment.getLocalGraphicsEnvironment();
fonts=e.getAvailableFontFamilyNames();
jcb=new JComboBox(fonts);
jcb.addActionListener(this);
//初始化Jcc
//jcc=new JColorChooser(Color.white);
//color=jcc.showDialog(jf, "颜色选择器", Color.white);
jbt1=new JButton("确定");
jbt2=new JButton("取消");
jbt3=new JButton("颜色选择器");
jbt1.addActionListener(this);
jbt2.addActionListener(this);
jbt3.addActionListener(this);
jta=new JTextArea(30,30);
jta.setText("我的记事本\n"+"my notepad");
jta.setEditable(true);
jta.setBorder(new TitledBorder("示例"));
jsp=new JScrollPane(jta,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
//字体大小在10-50
js=new JSlider(10,50);
js.setMajorTickSpacing(10);
js.setMinorTickSpacing(1);
js.setPaintTicks(true);
js.setPaintLabels(true);
//滑到整数附近
js.setSnapToTicks(true);
js.addChangeListener(this);
JPanel jpa1=new JPanel();
jpa1.add(jcb);
jpa1.add(js);
JPanel jpa2=new JPanel();
jpa2.add(jbt3);
jpa2.add(jbt1);
jpa2.add(jbt2);
JPanel jpa3=new JPanel();
jpa3.add(jsp,BorderLayout.CENTER);
this.add(jpa1,BorderLayout.NORTH);
this.add(jpa3,BorderLayout.CENTER);
this.add(jpa2,BorderLayout.SOUTH);
this.setSize(400, 200);
this.setLocation(200, 200);
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setTitle("字体选择器");
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jcb){
String curFontName=(String)jcb.getSelectedItem();
int curFontSize=js.getValue();
Font f=new Font(curFontName,Font.PLAIN,curFontSize);
jta.setFont(f);
}
//颜色选择器
if(e.getSource()==jbt3){
jcc=new JColorChooser(Color.white);
color=JColorChooser.showDialog(this, "颜色选择器", Color.white);
jta.setBackground(color);
}
if(e.getSource()==jbt1){
String curFontName=(String)jcb.getSelectedItem();
int curFontSize=js.getValue();
curFont=new Font(curFontName,Font.PLAIN,curFontSize);
//color=color;
NotePadWin.jta.setFont(curFont);
NotePadWin.jta.setBackground(color);
this.dispose();
}
if(e.getSource()==jbt2){
this.dispose();
}
}
//js
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==js){
String curFontName=(String)jcb.getSelectedItem();
int curFontSize=js.getValue();
Font f=new Font(curFontName,Font.PLAIN,curFontSize);
jta.setFont(f);
}
}
public Font getCurFont() {
return curFont;
}
public Color getColor() {
return color;
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询