java awt 中的 问题
发布网友
发布时间:1小时前
我来回答
共4个回答
热心网友
时间:2024-10-20 09:37
因为frame 和 textArea都是局部变量,因此,只能在匿名内部类中引用。如:
itemSave.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent ex)
{ ...
fileContent= textArea.getText().getBytes();
...
}
} );
如果不想用匿名内部类,就比较麻烦了,必须将frame和textArea声明成成员变量。
第一种方法是,把frame和textArea声明成静态,然后在SaveActionListener 中引用,这种写法失去了内部类的意义。
第二种方法是声明成非静态,但前提是你的main里面必须要创建该对象的实例。
所以还是用匿名的好一些。
热心网友
时间:2024-10-20 09:37
final Frame frame =new Frame("Text");
final TextArea textArea=new TextArea();
去掉final应该就可以了吧
热心网友
时间:2024-10-20 09:38
import java.awt.Frame;
import java.awt.TextArea;
热心网友
时间:2024-10-20 09:39
代码我调试好了,你在研究下有那里不一样.
欢迎光临我的论坛 p-mind.cn
//新做的工具 myeclipse 注册机 , 也许对你有用
http://p-mind.cn/bbs/viewthread.php?tid=264
package com.test;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.FileOutputStream;
public class RunCase {
public static void main(String[] args) {
final Frame frame = new Frame("Text");
final TextArea textArea = new TextArea();
//改 创建菜单应有MenuBar 作为容器,并添加Menu 实例(一个菜单项)
final MenuBar bar = new MenuBar();
Menu mu = new Menu("文件");
MenuItem item = new MenuItem("Save");
mu.add(item);
bar.add(mu);
SaveActionListener litSave = new SaveActionListener(frame,textArea);
mu.addActionListener(litSave);//给SAVE菜单注册事件
frame.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
super.windowClosing(e);
System.exit(0);
}
});
frame.setLocationRelativeTo(null);
frame.setSize(new Dimension(400,300));//窗体大小
frame.setMenuBar(bar);//把MenuBar设置到窗体中去
frame.setVisible(true);//显示窗体
}
//内部类在main 函数中使用要用static 修饰
static class SaveActionListener implements ActionListener {
//修改处
private Frame frame;
private TextArea textArea;
public SaveActionListener(Frame frame,TextArea textArea){
this.frame = frame;
this.textArea = textArea;
}
public void actionPerformed(ActionEvent ex) {
FileDialog fileSave = new FileDialog(frame, "Save text",
FileDialog.SAVE);
fileSave.setVisible(true);
try {
String fileName2 = fileSave.getDirectory() + fileSave.getFile();
FileOutputStream fileOutput = new FileOutputStream(fileName2);
byte[] fileContent = new byte[10 * 1024];
fileContent = textArea.getText().getBytes();
fileOutput.write(fileContent);
} catch (Exception exx) {
exx.getStackTrace();
}
}
}
}