JAVA怎么输出有窗口_【Java窗口工具类】创建本类即可创建窗口 可设置系统输入输出为本窗口 捕捉按键等...

本文介绍了一个Java窗口工具类,可用于创建窗口并设置系统输入输出到该窗口,支持捕捉按键事件。提供了println、printNew、clear方法进行输出管理,以及input、getKey等方法处理用户输入。此外,类还包含了窗口大小调整和居中显示的功能。
摘要由CSDN通过智能技术生成

void println(T str) { out.append(String.valueOf(str)); out.append("\n"); out.setCaretPosition(out.getText().length()); } /** * 清空原有内容输出 * @param str */ public

void printNew(T str) { out.setText(String.valueOf(str)); out.setCaretPosition(out.getText().length()); } /** * 清空输出框 */ public void clear() { out.setText(""); } // ******输入****** /** 输入框上最后释放按键的按键码 */ int key; /** * 当输入框按下回车且内容不为空时返回内容 * @return 返回输入框的内容 */ 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; } /** * 返回输入框按下的按键码,并清空输入框 * @return 按键码,方便与KeyEven的常量比较 */ public int getKey() { key = -1; // 阻塞直到监听到按下按键 while (true) { // 监听进程会修改key值,所以这里需要同步 synchronized (this) { if (key != -1) { break; } } } in.setText("\n");//如果直接用空白的话不能清空(康鸽帮忙解决) return key; } /** * 返回输入框按下的按键名文本,并清空输入框 * @return 按键名文本 */ public String getKeyName() { return KeyEvent.getKeyText(getKey()); } // ******构造与初始化****** public Win() { init(); } /** * 创建并显示带标题的窗口 * @param title */ public Win(String title) { f.setTitle(title); init(); } private void init() { setSize(400, 300); // 先添加输入文本框到窗体以便自动获得光标 f.add(in, BorderLayout.SOUTH); // 添加输出文本域到窗体 f.add(out); // 设置窗体关闭 f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); // 文本框按键释放时把按键记录到key in.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) { // 内部类可以:读取finally局部变量,读写类变量 key = e.getKeyCode(); } }); // 设置窗体可见 f.setVisible(true); } /** * 设置大小并居中窗口(用Screen在API文档搜索知道这个类) * 默认(400, 300) * @param width * @param hight */ 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); } // ******设置为默认输入输出流****** PrintStream printStream = new PrintStream(new WinOutputStream()); /** * 设置System.out为Win的输出文本域 */ public void setOut() { System.setOut(printStream); } /** * 设置System.out为Win的输出文本域 */ 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()); } } /** * 设置System.in为Win的输入文本框 */ 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值