2010-01-20 16 views
5

मैं जावा से प्रोलॉग कॉल करने के लिए SWI-Prolog द्वारा प्रदत्त JPL का उपयोग कर जावा में एक एप्लिकेशन लिख रहा हूं।मैं अपने जावा यूआई को जेपीएल प्रोलॉग एप्लिकेशन में कैसे वायरस कर सकता हूं?

मैं ग्रहण आईडीई के रूप में उपयोग कर रहा हूं।

यहाँ जावा कोड:

package prolog; 
import java.awt.Container; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 

import jpl.Atom; 
import jpl.Compound; 
import jpl.Variable; 
import jpl.Term; 
import jpl.Query; 
import jpl.JPL; 


@SuppressWarnings({ "unchecked", "deprecation", "serial" }) 
public class JavaProlog extends JFrame { 

JButton startButton = new JButton("Start"); 
JTextArea textArea = new JTextArea("A Diagnostic Expert System \n" + 
      "for respiratory diseases and lung."); 

/** 
    */ 
JavaProlog(){ 
    Container cp=getContentPane(); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    setLocation (200,200); 
    setSize (300,200); 
    setLayout (new FlowLayout()); 


    startButton.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e){ 
    startDiagnose(); 
    } 
    }); 

    cp.add(textArea); 
    cp.add(startButton); 

    setVisible(true); 
} 

private void startDiagnose(){ 
    Term consult_arg[] = { 
      new Atom("C://Users//i_vista//workspace//mdc.pl") 
     }; 
     Query consult_query = 
      new Query( 
       "consult", 
       consult_arg); 

     boolean consulted = consult_query.query(); 

     if (!consulted){ 
      System.err.println("Consult failed"); 
      System.exit(1); 
     } 
} 

public static void main(String argv[]){ 
    JPL.init(); 
    JavaProlog jpTest = new JavaProlog(); 

} 

अगर मैं Prolog से सीधे Prolog कार्यक्रम चलाने यह ठीक है और एक ही काम करता है जब मैं से इसे कहते मैं कैसे इस उदाहरण मैं ऑनलाइन पाया शुरू करने के लिए पता नहीं है जावा एप्लिकेशन।

मैं एक्लिप्स कंसोल में आउटपुट भी देख सकता हूं और मैं सवालों के जवाब दे सकता हूं।

लेकिन मैं उपयोगकर्ता और सिस्टम के बीच बातचीत के लिए जावा यूआई बनाना चाहता हूं लेकिन मुझे नहीं पता कि जावा में प्रोलॉग से कोड कैसे लेना है और इसे यूआई में रखना है।

उदाहरण के लिए मैं जावा यूआई से इनपुट कैप्चर कैसे कर सकता हूं और इसे प्रोलॉग कोड में पास कर सकता हूं?

उत्तर

1

समस्या यह है कि आपका प्रोलॉग टेक्स्ट उलटा शैली में नहीं लिखा गया है, उदाहरण के लिए जावा यूआई अनुप्रयोग आमतौर पर हैं।

तो अपनी प्रोलॉग प्रणाली को एक अलग धागे में शुरू करें। अपने प्रोलॉग टेक्स्ट में सभी पढ़ने/1 और लिखें/1 को प्रतिस्थापित करें:

my_read (प्रॉम्प्ट, वैल्यू): - set_UI_prompt (प्रॉम्प्ट), प्रतीक्षा करें (सिग्नल), get_UI_value (Value)।

my_write (लेबल, मान): - set_UI_result (लेबल, मान)।

एक दूसरे अलग थ्रेड में भी चल रहा है, एक मूल्य दर्ज करने और कुछ बटन मारने पर, UI अनुप्रयोग को सूचित करना चाहिए (सिग्नल)।

या विशेषज्ञ प्रणाली के तर्क को फिर से लिखना, ताकि संदर्भ किसी क्वेरी या उत्तर की ओर अग्रसर हो, तो चरण बुद्धिमान फैशन में बाहर से कॉल किया जा सकता है। लेकिन फिर भी धागे को बढ़ाने की सिफारिश की जाती है, क्योंकि अनुमान में समय लग सकता है।

बेस्ट सादर

पी.एस .: यदि आप आवेदन उल्टे गया, आप आसानी से कर सकता है यह विभिन्न UI के एक जोड़े: http://www.jekejeke.ch/idatab/doclet/prod/en/docs/10_pro08/13_press/02_deploy/package.html

संबंधित मुद्दे

 संबंधित मुद्दे