📄 example20_16.java
字号:
import java.awt.*;import java.io.*;import java.awt.event.*;public class Example20_16{ public static void main(String args[]) { JDK f=new JDK(); f.pack(); f.addWindowListener(new WindowAdapter() //窗口增加适配器。 {public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setBounds(100,120,700,360); f.setVisible(true); }}class JDK extends Frame implements ActionListener,Runnable{ Thread compiler=null; //负责编译的线程。 Thread run_prom=null; //负责运行程序的线程。 boolean bn=true; CardLayout mycard; Panel p=new Panel(); File file_saved=null; TextArea input_text=new TextArea(),//程序输入区。 compiler_text=new TextArea(), //编译出错显示区。 dos_out_text=new TextArea(); //程序运行时,负责显示在dos窗口的输出信息。 Button button_input_text,button_compiler_text, button_compiler,button_run_prom,button_see_doswin; TextField input_flie_name_text=new TextField("输入被编译的文件名字.java"); TextField run_file_name_text=new TextField("输入应用程序主类的名字"); JDK() { super("Java编程小软件"); mycard=new CardLayout(); compiler=new Thread(this); run_prom=new Thread(this); button_input_text=new Button("程序输入区(白色)"); button_compiler_text=new Button("编译结果区(粉色)"); button_compiler=new Button("编译程序"); button_run_prom=new Button("运行应用程序"); button_see_doswin=new Button("查看应用程序运行时在dos窗口输出的信息"); p.setLayout(mycard); p.add("input",input_text);p.add("compiler",compiler_text); p.add("dos",dos_out_text); add(p,"Center"); add( button_see_doswin,"South"); compiler_text.setBackground(Color.pink); dos_out_text.setBackground(Color.blue); Panel p1=new Panel();p1.setLayout(new GridLayout(4,2)); p1.add(new Label("按扭输入源程序:"));p1.add(button_input_text); p1.add(new Label("按扭看编译结果:"));p1.add(button_compiler_text); p1.add(input_flie_name_text); p1.add(button_compiler); p1.add(run_file_name_text); p1.add(button_run_prom); add(p1,BorderLayout.NORTH); button_input_text.addActionListener(this); button_compiler_text.addActionListener(this); button_compiler.addActionListener(this); button_run_prom.addActionListener(this); button_see_doswin.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource()==button_input_text) { mycard.show(p,"input"); } else if(e.getSource()==button_compiler_text) { mycard.show(p,"compiler"); } else if(e.getSource()==button_see_doswin) { mycard.show(p,"dos"); } else if(e.getSource()==button_compiler) { if(!(compiler.isAlive())) { compiler=new Thread(this); } try{ compiler.start(); } catch(Exception eee){} mycard.show(p,"compiler"); } else if(e.getSource()==button_run_prom) { if(!(run_prom.isAlive())) { run_prom =new Thread(this); } try{ run_prom.start(); } catch(Exception eee){} mycard.show(p,"dos"); } } public void run() { if(Thread.currentThread()==compiler) { compiler_text.setText(null); String temp=input_text.getText().trim(); byte buffer[]=temp.getBytes(); int b=buffer.length; String flie_name=input_flie_name_text.getText().trim(); try{ file_saved=new File(flie_name); FileOutputStream writefile=new FileOutputStream(file_saved); writefile.write(buffer,0,b);writefile.close(); } catch(IOException e5) { System.out.println("Error "); } try{ Runtime ce=Runtime.getRuntime(); InputStream in= ce.exec("javac "+flie_name).getErrorStream(); BufferedInputStream bin=new BufferedInputStream(in); byte shuzu[]=new byte[100]; int n;boolean bn=true; while((n=bin.read(shuzu,0,100))!=-1) { String s=null; s=new String(shuzu,0,n); compiler_text.append(s); if(s!=null) bn=false; } if(bn) { compiler_text.append("编译正确"); } } catch(IOException e1){} } else if(Thread.currentThread()==run_prom) { dos_out_text.setText(null); try{ Runtime ce=Runtime.getRuntime(); String path=run_file_name_text.getText().trim(); InputStream in=ce.exec("java "+path).getInputStream(); BufferedInputStream bin=new BufferedInputStream(in); byte zu[]=new byte[150]; int m;String s=null; while((m=bin.read(zu,0,150))!=-1) { s=new String(zu,0,m); dos_out_text.append(s); } } catch(IOException e1){} } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -