JAVA窗口工具类代码拆解说明
来源:互联网 发布:淘宝网上图片无法显示 编辑:程序博客网 时间:2024/06/05 14:58
JAVA窗口工具类拆分说明
完整源码:https://git.oschina.net/linwancheng/codes/4vze2kc8t3hnyr6a10jfx92
直接Win win = new Win()
即可创建窗口,也可以new Win(窗口标题)
,
使用win.setSize(长,宽)
可以设置窗口大小并让窗口重新回到屏幕中心。
使用win.setOut()
可以让类似System.out.println()
等方法都输出到本窗口,
同理win.setIn()
可以设置输入。
直接调用win.println()
等方法可以直接输入输出,甚至可以捕捉按键,
而win.printNew()
方法可以清空输出框并输出,可以让一些字符游戏变得更为真实。
窗体变量
// 这里的变量不私有是为了方便拓展使用 /** 窗口 */ Frame f = new Frame(); /** 输出文本域 */ TextArea out = new TextArea(); /** 输入文本框 */ TextField in = new TextField();
初始化方法init()
//设置大小并居中窗口 setSize(400, 300);
简单布局
// 先添加输入文本框到窗体以便自动获得光标 f.add(in, BorderLayout.SOUTH); // 添加输出文本域到窗体 f.add(out); //设置窗体可见 f.setVisible(true);
设置窗体关闭
f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } });
监听按键
in.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) { // 内部类可以:读取finally局部变量,读写类变量 key = e.getKeyCode(); } });
*设置大小并居中窗口()
//(用Screen在API文档搜索知道这个类) public void setSize(int width, int hight) { GraphicsEnvironment g = GraphicsEnvironment.getLocalGraphicsEnvironment(); Point centerPoint = g.getCenterPoint(); f.setBounds(centerPoint.x - width / 2, centerPoint.y - hight / 2,width, hight); }
构造方法
public Win() { init(); } /** * 创建并显示带标题的窗口 * @param title */ public Win(String title) { f.setTitle(title); init(); }
输出方法out
输出不换行
public <T> void print(T str) { out.append(String.valueOf(str)); out.setCaretPosition(out.getText().length()); }
输出并换行
public <T> void println(T str) { out.append(String.valueOf(str)); out.append("\n"); out.setCaretPosition(out.getText().length()); }
清空原有内容输出
public <T> void printNew(T str) { out.setText(String.valueOf(str)); out.setCaretPosition(out.getText().length()); }
清空输出框
public void clear() { out.setText(""); }
输入方法in
/** 输入框上最后释放按键的按键码 */ int key;
返回输入内容
public String input() { key = -1; // 阻塞直到监听到按下回车 while (true) { // 监听进程会修改key值,所以这里需要同步 synchronized (this) { if (key == KeyEvent.VK_ENTER && !in.getText().trim().equals("")) { break; } } } String rt = in.getText(); in.setText(""); return rt; }
返回按键
public int getKey() { key = -1; // 阻塞直到监听到按下按键 while (true) { // 监听进程会修改key值,所以这里需要同步 synchronized (this) { if (key != -1) { break; } } } in.setText("\n");//如果直接用空白的话不能清空(康鸽帮忙解决) return key; }
//返回输入框按下的按键名文本,并清空输入框 public String getKeyName() { return KeyEvent.getKeyText(getKey()); }
设为默认IO
//创建自定义输出流 PrintStream printStream = new PrintStream(new WinOutputStream());
设置输出为本窗口
public void setOut() { System.setOut(printStream); }
设置异常提示为本窗口
public void setErr() { System.setErr(printStream); }
自定义输出流
class WinOutputStream extends OutputStream { public void write(int arg0) throws IOException { } public void write(byte data[], int off, int len) throws IOException { out.append(new String(data, off, len)); out.setCaretPosition(out.getText().length()); } }
设置输入为本窗口
public void setIn() { InputStream inputStream = new WinInputStream(); System.setIn(inputStream); }
自定义输入流
class WinInputStream extends InputStream { public int read() throws IOException { return 0; } public int read(byte b[], int off, int len) throws IOException { byte[] bs = (input()+"\n").getBytes(); for (int i = 0; i < len; i++) { if ((i+off)<bs.length) { b[i] = bs[i+off]; }else { return bs.length; } } return len; } }}
阅读全文
0 0
- JAVA窗口工具类代码拆解说明
- TexturePacker 拆解工具
- 官方代码拆解
- java工具详细说明
- Java Cookie工具类代码
- java代码--登录窗口
- java 窗口动画显示工具
- Java Word Break(单词拆解)
- Java拆解字符串(包括中文)
- 代码说明生成工具doxygen的使用
- java实现数字拆解(正整数的所有拆解结果)
- java图片裁剪处理工具类代码
- [Java代码] JDBC分页工具类
- JAVA代码调用url链接工具类
- Java Mysql数据库工具类代码
- Java代码调用HTTP请求工具类
- java代码发送邮件工具类
- java 代码覆盖工具。
- 无法登陆某些网站的解决方法
- opensuse的阿里源
- jdk安装完为什么会有两个JRE
- SpringMVC学习(四)-处理模型数据
- 改进记录
- JAVA窗口工具类代码拆解说明
- 阿里秋招面试
- Mybatis的学习之路(二)
- python实现简单redis客户端(2)重构
- 算法提高 ADV-113 c++_ch02_0
- 链接03
- 算法提高 ADV-114 c++_ch02_03
- Ubuntu16.04+CUDA8.0+Caffe配置
- 算法提高 ADV-115 c++_ch03_02