Page 1 of 1
Java Console ---> Applet รบกวนหน่อยคะ
#1
Posted 21 June 2004 - 01:58 PM
จะสามารถเขียน Applet ที่ทำหน้าที่เหมือน Java Console สามารถแสดงผลด้วยคำสั่ง System.out.println("XXXXXXXX"); ได้ไหมคะ
#2
Posted 21 June 2004 - 04:25 PM
ถ้าทำงานคล้าย ๆ กับระบบ Console คุณ ktoth ต้องจัดการกับ Stream ของคลาส System ครับ คือ System.out และอาจจะแถมไปที่ System.err ด้วยก็ได้
โดยใช้ Statis Method
System.setOut(PrintStream out)
System.setErr(PrintStream err)
จากนั้นก็สร้างคลาสสักตัวที่ extends OutputStream
แล้วทำการ override method ที่ชื่อว่า write(int b)
แล้วก็ System.setOut(new PrintStream(new MyOutputStream())
PrintStream เดิมของคลาส System จะเป็น Native Method ส่งข้อความไปยัง Console คุณก็เขียนให้ write(int b) วาดรูปขึ้นบน Applet แทน ...
วิธีนี้น่าจะช่วยได้นะครับ
โดยใช้ Statis Method
System.setOut(PrintStream out)
System.setErr(PrintStream err)
จากนั้นก็สร้างคลาสสักตัวที่ extends OutputStream
แล้วทำการ override method ที่ชื่อว่า write(int b)
แล้วก็ System.setOut(new PrintStream(new MyOutputStream())
PrintStream เดิมของคลาส System จะเป็น Native Method ส่งข้อความไปยัง Console คุณก็เขียนให้ write(int b) วาดรูปขึ้นบน Applet แทน ...
วิธีนี้น่าจะช่วยได้นะครับ
This post has been edited by iWat: 21 June 2004 - 07:56 PM
#3
Posted 21 June 2004 - 07:56 PM
ลองศึกษา code นี้ดูนะครับ เชื่อว่าคงช่วยได้บ้าง
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class HelloWorld extends JApplet {
private StringBuffer data = new StringBuffer();
public void init() {
PrintStream p = new PrintStream(new AppletOutputStream(this));
System.setOut(p);
JButton but = new JButton("Test");
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Hello World");
}
});
this.setLayout(new FlowLayout());
this.add(but);
}
public void printchar(int b) {
data.append((char) b);
repaint();
}
public void paint(Graphics g) {
g.drawString(data.toString(), 50, 100);
}
}import java.io.*;
public class AppletOutputStream extends OutputStream {
private HelloWorld a;
public AppletOutputStream(HelloWorld a) {
this.a = a;
}
public void write(int b) {
a.printchar(b);
}
}
#5
Posted 22 December 2007 - 06:10 PM
ผมลองใช้
จะเจอ warning ว่า deprecated API ตรง new PrintStream ครับ
-จะแก้ warning ใช้คำสั่งอะไรดี
-และก็มีวิธี append int เป็น char ลง AWT TextArea โดยตรงมั้ยครับ ขอบคุณครับ
PrintStream myPrintStream = new PrintStream(new myOutput());
System.setOut(myPrintStream);
System.setErr(myPrintStream);
...
class myOutput extends OutputStream {
public void write(int c) {
char a[] = new char[1];
a[0] = (char)c;
myProgram.this.myTextArea.append(new String(s));
}จะเจอ warning ว่า deprecated API ตรง new PrintStream ครับ
-จะแก้ warning ใช้คำสั่งอะไรดี
-และก็มีวิธี append int เป็น char ลง AWT TextArea โดยตรงมั้ยครับ ขอบคุณครับ
This post has been edited by bpitk: 22 December 2007 - 06:11 PM
Share this topic:
Page 1 of 1

Help












