您的位置:首页 > 产品设计 > UI/UE

黑马程序员_javaGUI综合部件布局与事件处理

2015-11-30 22:35 579 查看
------- android培训java培训、期待与您交流! ----------

构建简单的记事本

类的基本结构:

猜一下代码有多长?

之间粘贴上来肯定没人去看,我还是添加到附件上吧。

我擦‘’‘’‘~谁能告诉我在哪里可以添加附件!!!!

No! 竟然连个添加附件都没有!!希望是我眼瞎,不然真不知道你们是怎么过来的,

哎,那我也只好把思想心得添加都源代码上的,留给自己以后回忆曾经逝去的青春中的一枚符号吧。

public class Wordpad {
private static Frame f;
private MenuBar bar;
private Menu wj;
private Menu cx;
private MenuItem open;
private MenuItem close;
private MenuItem save;
private MenuItem exit;
private MenuItem search;
private MenuItem replace;
private static TextArea ta;
private static FileDialog fd;
private static File file;
//构造方法
Wordpad(){
init();
}
//设计主页面
private void init() {
f = new Frame("记事本");
bar = new MenuBar();
wj = new Menu("文件");
cx = new Menu("查找");
open = new MenuItem("打开");
close = new MenuItem("关闭");
save = new MenuItem("保存");
exit = new MenuItem("退出");
search = new MenuItem("查询");
replace = new MenuItem("替换");
ta = new TextArea();
f.setBounds(200,100,600,550);
f.setMenuBar(bar);
bar.add(wj);
wj.add(open);
wj.add(close);
wj.add(cx);
wj.add(save);
wj.add(exit);
cx.add(search);
cx.add(replace);
f.add(ta);
myEvent();
f.setVisible(true);
}
//给主页的组件添加事件
private void myEvent() {
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

open.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
WjTool.openFile();
}
});
close.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
WjTool.closeFile();
}
});
save.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
WjTool.saveFile();
}
});
exit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
search.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new SeachTishi();
}
});
replace.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new ReplaceTishi();
}
});

}
//文件工具类.
private static class WjTool{

static void openFile() {
fd = new FileDialog(f,"打开",FileDialog.LOAD);
fd.setVisible(true);
String dirPath = fd.getDirectory();
String fileName = fd.getFile();
if(dirPath==null||fileName==null)
return ;
ta.setText("");
file = new File(dirPath , fileName);
BufferedReader buf = null;
try {
buf = new BufferedReader(new FileReader(file));
String s = null ;
while((s=buf.readLine())!=null){
ta.append(s+"\r\n");
}
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
finally{
try {
if(buf!=null)
buf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
static void closeFile() {
saveFile();
ta.setText("");
file = null;
}
static void saveFile() {
if(file==null){
fd = new FileDialog(f,"保存",FileDialog.SAVE);
fd.setVisible(true);
String dirPath = fd.getDirectory();
String fileName = fd.getFile();
if(dirPath==null||fileName==null)
return ;
file = new File(dirPath,fileName);
}
BufferedWriter buf = null;
try {
buf = new BufferedWriter(new FileWriter(file));
buf.write(ta.getText());
} catch (IOException e) {
e.printStackTrace();
}
finally{
try {
if(buf!=null)
buf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

//查询操作信息提示窗口类(内部类)
private class SeachTishi{
Dialog d;
TextField tf;
Label lb;
Button but;
SeachTishi(){
info();
}
//创建设置提示窗体页面
private void info() {
d = new Dialog(f,"查找",false);
tf = new TextField(40);
but = new Button("确认");
lb = new Label();
d.setBounds(300,200,400,150);
d.setLayout(new FlowLayout());
d.add(tf);
d.add(but);
d.add(lb);
myEvent();
d.setVisible(true);
}
//给提示窗体页面中的组件添加事件监听器
private void myEvent(){
d.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
d.setVisible(false);
}
});
tf.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_ENTER)
searchShow();
}
});
but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
searchShow();
}
});
}
private void searchShow() {
String key = tf.getText();
if(key.equals(""))
return ;
String isExist =ta.getText().contains(key)? "存在":"不存在";
lb.setText("\""+key+"\""+"在文本中"+isExist);
d.setVisible(true);
}

}

//替换操作信息提示窗口类(内部类)
private class ReplaceTishi{
Dialog d;
TextField tfkey;
Label lb;
TextField tfvalue;
Label lbl;
Button but;
ReplaceTishi(){
info();
}
//创建设置提示窗体页面
private void info() {
d = new Dialog(f,"替换",false);
tfkey = new TextField(15);
tfvalue = new TextField(15);
lb = new Label("替换为");
but = new Button("确认");
lbl = new Label();
d.setBounds(300,200,400,150);
d.setLayout(new FlowLayout());
d.add(tfkey);
d.add(lb);
d.add(tfvalue);
d.add(but);
d.add(lbl);
myEvent();
d.setVisible(true);
}
//给提示窗体页面中的组件添加事件监听器
private void myEvent(){
d.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
d.setVisible(false);
}
});
tfvalue.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_ENTER)
replaceShow();
}
});
but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
replaceShow();
}
});
}
private void replaceShow() {
String key = tfkey.getText();
if(key.equals(""))
return ;
String value = tfvalue.getText();
StringBuilder sb = new StringBuilder(ta.getText());
int index = 0;
int count = 0 ;
while((index=sb.indexOf(key,index))!=-1){
System.out.println(index);
sb.delete(index, index+key.length());
sb.insert(index, value);
//防止因为value中含有key,而也被导致替换。
index = index + value.length();
count++;
}
lbl.setText("替换已完成:已替换"+count+"处");
ta.setText(sb.toString());
d.setVisible(true);
}
}

public static void main(String[] args) {
new Wordpad();
}

}


学了将近一个月的java,从一开始的十几行,到现在不经意间就上百行了,心里还是觉得震惊的,

虽然可能质量还不咋的,而且还是不是的出现一些更让人想吐血的错误,但分析问题的能力算是提高一小节亦大阶梯。

有了自己的学习方法,还明白了自己的不足,则将会成为今后学习中的转折点,加油!为自己! 加油!为明天!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: