java 用swing做的记事本,但是设置不了默认字体大小有时候退出还会报错,错误是:
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at sun.java2d.Disposer.run(Disposer.java:127)
at java.lang.Thread.run(Thread.java:662)
Exception while removing reference: java.lang.InterruptedException代码:
package work2;import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.*;import javax.swing.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Scanner;
public class Notepad extends JFrame implements ItemListener , ActionListener{ public static final int WINDOW_WIDTH = 800;
public static final int WINDOW_HEIGHT = 600;
JComboBox jcb1 = null;
JComboBox jcb2 = null;
String[] fontSize = {"10","12","14","16","18","20","22","24","26","48","72"};
/*String[] fontFamily = {"仿宋体","黑体","楷体","宋体","微软雅黑","Serief"};*/
TextArea txContent = null;
File file = null ; // 接收文件
int result = 0 ; // 接收操作状态
JFileChooser fileChooser = new JFileChooser() ; // 文件选择框
public static void main(String[] args){
new Notepad(); }
Notepad(){
Container cont = this.getContentPane();
setTitle("Notepad");
int width = getToolkit().getScreenSize().width;
int height = getToolkit().getScreenSize().height;
setSize(WINDOW_WIDTH ,WINDOW_HEIGHT);
setLocation((width-WINDOW_WIDTH)/2,(height-WINDOW_HEIGHT)/2);
//文本区
txContent = new TextArea();
txContent.setEditable(true) ;//可编辑
//滚动条
cont.add(new JScrollPane(txContent)) ;
//菜单栏
JMenuBar myJMenuBar = new JMenuBar();
this.setJMenuBar(getJMenuBar());
JMenu jMenu1 = new JMenu("文件");
JMenuItem jit1 = new JMenuItem("新建");
JMenuItem jit2 = new JMenuItem("打开");
JMenuItem jit3 = new JMenuItem("保存");
JMenuItem jit4 = new JMenuItem("退出");
myJMenuBar.add(jMenu1);
jMenu1.add(jit1);
jMenu1.add(jit2);
jMenu1.add(jit3);
jMenu1.add(jit4);
//设置下拉列表
jcb1 = new JComboBox(fontSize) ;// 实例化下拉列表框
JPanel jp = new JPanel();
jcb1.addItemListener(this);
jcb1.addActionListener(this);
jcb1.setMaximumRowCount(3) ;
cont.setLayout(null);
changeFontSize(12);// 默认值
myJMenuBar.setBounds(0,0,800,30);
cont.add(myJMenuBar);
jp.setBounds(0,30,800,40);
jp.add(jcb1);
cont.add(jp);
txContent.setBounds(0,70,800,530);
cont.add(txContent);
jit2.addActionListener(new ActionListener(){ JFrame frame = new JFrame();
public void actionPerformed(ActionEvent e){
txContent.setText("") ; // 打开将文字区域的内容清空
fileChooser.setApproveButtonText("确定") ;
fileChooser.setDialogTitle("打开文件") ;
result = fileChooser.showOpenDialog(this.frame) ;
if(result==JFileChooser.APPROVE_OPTION){ // 选择的是确定按钮
file = fileChooser.getSelectedFile() ; // 得到选择的文件
if(file!=null){
try{
Scanner scan = new Scanner(new FileInputStream(file)) ;
scan.useDelimiter("\n") ;
while(scan.hasNext()){
txContent.append(scan.next()) ;
txContent.append("\n") ;
}
scan.close() ;
}catch(Exception e1){
e1.printStackTrace();
}
}
}
}
}) ;
jit3.addActionListener(new ActionListener(){
JFrame frame = new JFrame();
public void actionPerformed(ActionEvent e){
result = fileChooser.showSaveDialog(this.frame) ; // 显示保存框
if(result==JFileChooser.APPROVE_OPTION){ // 选择的是确定按钮
file = fileChooser.getSelectedFile() ; // 得到选择的文件
}
if(file!=null){
try{
PrintStream out = new PrintStream(new FileOutputStream(file)) ;
out.print(txContent.getText()) ;
out.close() ;
}catch(Exception e1){
e1.printStackTrace();
}
}
}
}) ;
jit4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}) ;
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setResizable(false);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String item = (String)this.jcb1.getSelectedItem() ;
int size = 12 ; // 设置一个默认大小
try{
size = Integer.parseInt(item) ;
}catch(Exception e1){}
this.changeFontSize(size) ;
}
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED){ // 判断是否是选中
String itemSize = (String)e.getItem() ;
try{
this.changeFontSize(Integer.parseInt(itemSize)) ;
}catch(Exception e1){
}
}
} public void changeFontSize(int size){
Font fnt = new Font("Serief",Font.BOLD,size) ;
txContent.setFont(fnt) ;
}
}希望各位前辈帮忙看看,急~
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at sun.java2d.Disposer.run(Disposer.java:127)
at java.lang.Thread.run(Thread.java:662)
Exception while removing reference: java.lang.InterruptedException代码:
package work2;import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.*;import javax.swing.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Scanner;
public class Notepad extends JFrame implements ItemListener , ActionListener{ public static final int WINDOW_WIDTH = 800;
public static final int WINDOW_HEIGHT = 600;
JComboBox jcb1 = null;
JComboBox jcb2 = null;
String[] fontSize = {"10","12","14","16","18","20","22","24","26","48","72"};
/*String[] fontFamily = {"仿宋体","黑体","楷体","宋体","微软雅黑","Serief"};*/
TextArea txContent = null;
File file = null ; // 接收文件
int result = 0 ; // 接收操作状态
JFileChooser fileChooser = new JFileChooser() ; // 文件选择框
public static void main(String[] args){
new Notepad(); }
Notepad(){
Container cont = this.getContentPane();
setTitle("Notepad");
int width = getToolkit().getScreenSize().width;
int height = getToolkit().getScreenSize().height;
setSize(WINDOW_WIDTH ,WINDOW_HEIGHT);
setLocation((width-WINDOW_WIDTH)/2,(height-WINDOW_HEIGHT)/2);
//文本区
txContent = new TextArea();
txContent.setEditable(true) ;//可编辑
//滚动条
cont.add(new JScrollPane(txContent)) ;
//菜单栏
JMenuBar myJMenuBar = new JMenuBar();
this.setJMenuBar(getJMenuBar());
JMenu jMenu1 = new JMenu("文件");
JMenuItem jit1 = new JMenuItem("新建");
JMenuItem jit2 = new JMenuItem("打开");
JMenuItem jit3 = new JMenuItem("保存");
JMenuItem jit4 = new JMenuItem("退出");
myJMenuBar.add(jMenu1);
jMenu1.add(jit1);
jMenu1.add(jit2);
jMenu1.add(jit3);
jMenu1.add(jit4);
//设置下拉列表
jcb1 = new JComboBox(fontSize) ;// 实例化下拉列表框
JPanel jp = new JPanel();
jcb1.addItemListener(this);
jcb1.addActionListener(this);
jcb1.setMaximumRowCount(3) ;
cont.setLayout(null);
changeFontSize(12);// 默认值
myJMenuBar.setBounds(0,0,800,30);
cont.add(myJMenuBar);
jp.setBounds(0,30,800,40);
jp.add(jcb1);
cont.add(jp);
txContent.setBounds(0,70,800,530);
cont.add(txContent);
jit2.addActionListener(new ActionListener(){ JFrame frame = new JFrame();
public void actionPerformed(ActionEvent e){
txContent.setText("") ; // 打开将文字区域的内容清空
fileChooser.setApproveButtonText("确定") ;
fileChooser.setDialogTitle("打开文件") ;
result = fileChooser.showOpenDialog(this.frame) ;
if(result==JFileChooser.APPROVE_OPTION){ // 选择的是确定按钮
file = fileChooser.getSelectedFile() ; // 得到选择的文件
if(file!=null){
try{
Scanner scan = new Scanner(new FileInputStream(file)) ;
scan.useDelimiter("\n") ;
while(scan.hasNext()){
txContent.append(scan.next()) ;
txContent.append("\n") ;
}
scan.close() ;
}catch(Exception e1){
e1.printStackTrace();
}
}
}
}
}) ;
jit3.addActionListener(new ActionListener(){
JFrame frame = new JFrame();
public void actionPerformed(ActionEvent e){
result = fileChooser.showSaveDialog(this.frame) ; // 显示保存框
if(result==JFileChooser.APPROVE_OPTION){ // 选择的是确定按钮
file = fileChooser.getSelectedFile() ; // 得到选择的文件
}
if(file!=null){
try{
PrintStream out = new PrintStream(new FileOutputStream(file)) ;
out.print(txContent.getText()) ;
out.close() ;
}catch(Exception e1){
e1.printStackTrace();
}
}
}
}) ;
jit4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}) ;
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setResizable(false);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String item = (String)this.jcb1.getSelectedItem() ;
int size = 12 ; // 设置一个默认大小
try{
size = Integer.parseInt(item) ;
}catch(Exception e1){}
this.changeFontSize(size) ;
}
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED){ // 判断是否是选中
String itemSize = (String)e.getItem() ;
try{
this.changeFontSize(Integer.parseInt(itemSize)) ;
}catch(Exception e1){
}
}
} public void changeFontSize(int size){
Font fnt = new Font("Serief",Font.BOLD,size) ;
txContent.setFont(fnt) ;
}
}希望各位前辈帮忙看看,急~
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.*;import javax.swing.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class Notepad extends JFrame implements ItemListener , ActionListener{public static final int WINDOW_WIDTH = 800;
public static final int WINDOW_HEIGHT = 600;
private int size=12;//初始化
private Map mapIndex;//初始化mapIndexJComboBox jcb1 = null;
JComboBox jcb2 = null;String[] fontSize = {"10","12","14","16","18","20","22","24","26","48","72"};
/*String[] fontFamily = {"仿宋体","黑体","楷体","宋体","微软雅黑","Serief"};*/
TextArea txContent = null;
File file = null ; // 接收文件
int result = 0 ; // 接收操作状态
JFileChooser fileChooser = new JFileChooser() ; // 文件选择框public static void main(String[] args){
new Notepad();}
Notepad(){
Container cont = this.getContentPane();
setTitle("Notepad");
int width = getToolkit().getScreenSize().width;
int height = getToolkit().getScreenSize().height;
setSize(WINDOW_WIDTH ,WINDOW_HEIGHT);
setLocation((width-WINDOW_WIDTH)/2,(height-WINDOW_HEIGHT)/2);
//文本区
txContent = new TextArea();
txContent.setEditable(true) ;//可编辑
//滚动条
cont.add(new JScrollPane(txContent)) ;
//菜单栏
JMenuBar myJMenuBar = new JMenuBar();
this.setJMenuBar(getJMenuBar());
JMenu jMenu1 = new JMenu("文件");JMenuItem jit1 = new JMenuItem("新建");
JMenuItem jit2 = new JMenuItem("打开");
JMenuItem jit3 = new JMenuItem("保存");
JMenuItem jit4 = new JMenuItem("退出");myJMenuBar.add(jMenu1);jMenu1.add(jit1);
jMenu1.add(jit2);
jMenu1.add(jit3);
jMenu1.add(jit4);
//设置下拉列表
jcb1 = new JComboBox(fontSize) ;// 实例化下拉列表框JPanel jp = new JPanel();
jcb1.addItemListener(this);
jcb1.addActionListener(this);
jcb1.setMaximumRowCount(3) ;cont.setLayout(null);
changeFontSize(12);// 默认值
myJMenuBar.setBounds(0,0,800,30);
cont.add(myJMenuBar);
jp.setBounds(0,30,800,40);jp.add(jcb1);
cont.add(jp);
txContent.setBounds(0,70,800,530);
cont.add(txContent);jit2.addActionListener(new ActionListener(){JFrame frame = new JFrame();
public void actionPerformed(ActionEvent e){
txContent.setText("") ; // 打开将文字区域的内容清空
fileChooser.setApproveButtonText("确定") ;
fileChooser.setDialogTitle("打开文件") ;
result = fileChooser.showOpenDialog(this.frame) ;
if(result==JFileChooser.APPROVE_OPTION){ // 选择的是确定按钮
file = fileChooser.getSelectedFile() ; // 得到选择的文件
if(file!=null){
try{
Scanner scan = new Scanner(new FileInputStream(file)) ;
scan.useDelimiter("\n") ;
while(scan.hasNext()){
txContent.append(scan.next()) ;
txContent.append("\n") ;
}
scan.close() ;
}catch(Exception e1){
e1.printStackTrace();
}
}
}
}
}) ;
jit3.addActionListener(new ActionListener(){JFrame frame = new JFrame();
public void actionPerformed(ActionEvent e){
result = fileChooser.showSaveDialog(this.frame) ; // 显示保存框
if(result==JFileChooser.APPROVE_OPTION){ // 选择的是确定按钮
file = fileChooser.getSelectedFile() ; // 得到选择的文件
}
if(file!=null){
try{
PrintStream out = new PrintStream(new FileOutputStream(file)) ;
out.print(txContent.getText()) ;
out.close() ;
}catch(Exception e1){
e1.printStackTrace();
}
}
}
}) ;
jit4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}) ;addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setResizable(false);
setVisible(true);
this.initMapIndex();
this.actionPerformed();
}@Override
public void actionPerformed(ActionEvent e) {
int item = Integer.parseInt(String.valueOf(this.jcb1.getSelectedItem()));
try{
this.size=item;
}catch(Exception e1){}
this.changeFontSize(this.size) ;
}public void actionPerformed() {
this.jcb1.setSelectedItem(this.size);
this.jcb1.setSelectedIndex(this.searchItemIndex());
try{
this.changeFontSize(this.size) ;
}catch(Exception e1){}
}//初始化map
public void initMapIndex(){
this.mapIndex=new HashMap();
for (int i=0;i<this.fontSize.length;i++){
mapIndex.put(this.fontSize[i],i);
}
}//初始化Item
public int searchItemIndex(){
return (Integer) this.mapIndex.get(String.valueOf(this.size));
}
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange()==ItemEvent.SELECTED){ // 判断是否是选中
String itemSize = (String)e.getItem() ;
try{
this.changeFontSize(Integer.parseInt(itemSize)) ;
}catch(Exception e1){}
}}public void initSelectedItem(){
this.jcb1.setSelectedItem(this.size);
}public void changeFontSize(int size){Font fnt = new Font("Serief",Font.BOLD,size) ;
txContent.setFont(fnt) ;
}
}我帮你修改的。基本解决了。。