Поскольку я использовал правила для проектов drools, при нажатии кнопки «Готово» он должен перейти на следующую панель, но этого не произошло. Я пытался решить эту проблему много часов. Но я не могу решить. Можете ли вы помочь мне, пожалуйста.
package rules
import com.sample.factObject;
import com.sample.getInput;`enter code here`
import com.sample.findApprox;
import java.util.*;
import javax.swing.*;
dialect "java"
rule "analyzeSymptoms"
when
fo:factObject ()
then
getInput.getMatches(fo);
end
rule "checkInput"
when
i:getInput (inp.size() == 0)
then
JOptionPane.showMessageDialog(null, "Enter symptoms");
System.exit(-1);
//System.out.println(-1);
end
rule "printOutput"
when
fo:factObject ()
i:getInput (inp.size() != 0)
then
findApprox.findApprox(fo);
end
Когда я нажимаю кнопку "Готово", он должен проверить условия и создать отчет. Но он не сработал.
package com.sample;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.*;
import java.util.*;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class findApprox {
static Map<String , ArrayList<String>> map1;
static Map<String , ArrayList<String>> map2;
static Map<String , ArrayList<String>> map3;
static int check = 0;
static JFrame f;
static JTextArea l;
static JScrollPane scroll;
static JButton b;
static JPanel p;
static void build(){
f.setVisible(true);
f = new JFrame("Report");
f.setSize(600, 500);
f.setLayout(null);
f.setLocation(300, 150);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
l = new JTextArea();
// l.setText("<html>");
for(Map.Entry<String , ArrayList<String>> entry :
map1.entrySet()){
String disease = entry.getKey();
// System.out.println(disease + " " +
entry.getValue() + map2.get(disease));
ArrayList<String> s1 = entry.getValue();
ArrayList<String> s2 = map2.get(disease);
ArrayList<String> s3 = map3.get(disease);
l.setText(l.getText() + "\n" + "Symptoms for " +
disease + ":" + "\n" + s1 + "\n" + "\n"
+ "Patient has extra symptoms:" + "\n"
+ s2 + " " + "(" + s2.size() + "/" + getInput.inp.size() + ")" + "\n"
+ "Extra symptoms for the disease are:" + "\n" +
s3 + " " + "(" + s3.size() + "/" +
s1.size() + ")"+ "\n");
}
l.setText(l.getText() + "\n" + "Please check if you have missed
any symptom and try again.");
//System.out.println(l.getText());
scroll = new JScrollPane(l);
f.add(scroll);
f.setVisible(true);
}
public static void findApprox(factObject fo){
// if( ((fo.getsi1() > 0.5) || (fo.getsi2() < 0.5))
&&fo.getIL().size() != getInput.inp.size()){
String disease = fo.getDiseaseName();
// System.out.println(disease);
ArrayList<String> s = fo.getSymptoms();
map1.put(disease,s);
ArrayList<String> il = fo.getIL();
map2.put(disease, il);
ArrayList<String> sl = fo.getSL();
map3.put(disease, sl);
// }
// System.out.println(fo.getsi());
check++;
if(check == runRule.total){
build();
}
}
}
b2.addActionListener (новый запуск (kSession));
// Этот код здесь в последнем сеансе.
// Нажав кнопку Готово, т. Е. B2, он проверяет правила.
package com.sample;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import javax.swing.*;
import org.kie.api.runtime.KieSession;
public class scan implements ActionListener{
JFrame f1,f;
JButton b1,b2;
JComboBox c;
KieSession kSession;
ArrayList<String> populate;
public scan(KieSession kSession,ArrayList<String> populate,JFrame f){
this.kSession = kSession;
this.populate = populate;
this.f = f;
Set<String> set = new HashSet<>();
set.addAll(populate);
String cvalues[]= set.toArray(new String[set.size()]);
Arrays.sort(cvalues);
c = new JComboBox(cvalues);
}
@Override
public void actionPerformed(ActionEvent e) {
f1 = new JFrame("scan");
f1.setSize(600, 300);
f1.setLocation(300,150);
f1.setLayout(null);
c.setBounds(200, 70, 200, 30);
c.setSize(200, c.getPreferredSize().height);
BoundsPopupMenuListener listener = new BoundsPopupMenuListener(true, false);
c.addPopupMenuListener( listener );
f1.setSize(600, 300);
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
b1 = new JButton("Add");
b1.setSize(50, 50);
b1.setBounds(100, 160, 100, 30);
b1.addActionListener(new readInput(c));
b2 = new JButton("Finish");
b2.setSize(50, 50);
b2.setBounds(400, 160, 100, 30);
b2.addActionListener(new Run(kSession));
//By pressing Finish button i.e b2 it checks the rules
f1.add(c);
f1.add(b1);
f1.add(b2);
f1.setVisible(true);
f.dispose();
}
}