Saya memiliki file prolog (Sistem Pakar) yang saya konsultasikan dari Java menggunakan perpustakaan Jpl (org.jpl7.*) dan saya memiliki UI tempat saya ingin menampilkan output kueri prolog. Ini adalah Aliran Keluaran Khusus saya yang seharusnya mengalihkan setiap konten konsol ke antarmuka saya (jTextAreaOUTPUT adalah tempat saya mengarahkan ulang konten)
public class CustomOutputStream extends OutputStream {
private JTextArea jTextAreaOUTPUT;
public CustomOutputStream(JTextArea textArea) {
jTextAreaOUTPUT = textArea;
}
@Override
public void write(int b) throws IOException {
// redirects data to the text area
jTextAreaOUTPUT.append(String.valueOf((char)b));
// scrolls the text area to the end of data
jTextAreaOUTPUT.setCaretPosition(jTextAreaOUTPUT.getDocument().getLength());
}
}
Ini adalah beberapa baris yang saya miliki di Kelas Antarmuka saya: ini memanggil metode Aliran Output Kustom:
PrintStream printStream = new PrintStream(new CustomOutputStream(jTextAreaOUTPUT), true, "UTF-8");
// keeps reference of standard output stream
PrintStream standardOut = System.out;
System.setOut(printStream);
System.setErr(printStream);
Untuk beberapa alasan aneh, file prolog ini tidak berfungsi (saya mencoba dengan yang lain dan berhasil): UI macet dan konten terus ditampilkan di konsol Java (gerhana). File Sistem Pakar bekerja dengan instruksi write
di Prolog (mis. write('Lorem Ipsum')
)
- Mengapa standardOut tidak pernah digunakan? Bolehkah dinyatakan seperti ini?
- Apakah ada cara untuk memaksa pengalihan untuk semua teks yang harus ditulis di konsol Eclipse?
Saya juga mencoba menggunakan metode "write Stream" di prolog, tetapi (hanya untuk file prolog ini, mungkin karena rekursi) UI macet meskipun output ditulis pada file txt.