Nachdem ich jetzt erfahren habe (in einem anderen Thread, aus dem Anfängerforum, aber habe gemerkt dass das Problem bei meiner Oberfläche liegt) dass ein weiterer Thread für meine Anwendung nötig ist, habe ich mit den gegebenen Hilfen und bisschen suchen versucht eine Lösung zu finden, klappt leider nicht so richtig :-/
Hier der Code
Leider führt er den Code in run() nicht aus, warum?
Am besten erklär ich etwas, also:
vr.start(text); < soll die ganze zeit während das Programm läuft auch arbeiten, wenn ein Ergebnis gefunden wurde, wird es in das textfeld geschrieben. Intern ist es in einer Schleife, bis ein bestimmtes Ereignis eintritt, also muss das nicht in einer Schleife in diesem Code realisiert werden. Es soll quasi die ganze Zeit parallel zum Programm laufen, wenn möglich später bei Bedarf auch manuell gestoppt werden.
Hoffe ihr könnt mir helfen
Hier der Code
Code:
package visual;
import java.io.IOException;
import javax.speech.recognition.GrammarException;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.custom.CCombo;
import java.lang.Runtime;
import edu.cmu.sphinx.util.props.PropertyException;
import features.Start_VR;
public class Fend extends Thread{
private Shell sShell = null;
private static Display display = Display.getDefault();
private Composite all = null;
private Composite top = null;
private Label Datei = null;
private Label Bearbeiten = null;
private Label Ansicht = null;
private Composite buttons = null;
private Composite components = null;
private Tree ctree = null;
private Button START = null;
public Text text = null;
private Button Command = null;
private Composite elements = null;
private Label label = null;
private Text text1 = null;
private Label label1 = null;
private Button checkBox = null;
private Label label2 = null;
private void createAll() {
GridLayout gridLayout3 = new GridLayout();
gridLayout3.numColumns = 1;
gridLayout3.makeColumnsEqualWidth = false;
all = new Composite(sShell, SWT.NONE);
createTop();
createButtons();
all.setLayout(gridLayout3);
createComponents();
}
private void createTop() {
GridData gridData3 = new GridData();
gridData3.horizontalAlignment = GridData.BEGINNING;
gridData3.verticalAlignment = GridData.CENTER;
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
gridLayout.makeColumnsEqualWidth = false;
top = new Composite(all, SWT.NONE);
top.setLayout(gridLayout);
top.setLayoutData(gridData3);
Datei = new Label(top, SWT.NONE);
Datei.setText("Datei");
Bearbeiten = new Label(top, SWT.NONE);
Bearbeiten.setText("Bearbeiten");
Ansicht = new Label(top, SWT.NONE);
Ansicht.setText("Ansicht");
}
public void createButtons() {
GridLayout gridLayout2 = new GridLayout();
gridLayout2.numColumns = 2;
buttons = new Composite(all, SWT.NONE);
buttons.setLayout(gridLayout2);
START = new Button(buttons, SWT.NONE);
START.setText("start");
Command = new Button(buttons, SWT.NONE);
Command.setText("Command");
}
private void createComponents() {
GridData gridData21 = new GridData();
gridData21.horizontalSpan = 2;
gridData21.verticalAlignment = GridData.FILL;
gridData21.horizontalAlignment = GridData.FILL;
GridData gridData11 = new GridData();
gridData11.grabExcessHorizontalSpace = false;
gridData11.horizontalAlignment = GridData.FILL;
gridData11.verticalAlignment = GridData.CENTER;
gridData11.verticalSpan = 2;
gridData11.grabExcessVerticalSpace = false;
GridData gridData = new GridData();
gridData.verticalAlignment = GridData.CENTER;
gridData.grabExcessHorizontalSpace = false;
gridData.grabExcessVerticalSpace = false;
gridData.horizontalAlignment = GridData.FILL;
GridLayout gridLayout1 = new GridLayout();
gridLayout1.numColumns = 3;
gridLayout1.verticalSpacing = 5;
gridLayout1.makeColumnsEqualWidth = true;
components = new Composite(all, SWT.NONE);
components.setLayout(gridLayout1);
components.setLayoutData(gridData11);
ctree = new Tree(components, SWT.NONE);
ctree.setLayoutData(gridData);
text = new Text(components, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
text.setEditable(false);
text.setLayoutData(gridData21);
text.setEnabled(true);
}
private void createElements() {
GridLayout gridLayout4 = new GridLayout();
gridLayout4.numColumns = 2;
elements = new Composite(sShell, SWT.NONE);
elements.setLayout(gridLayout4);
label = new Label(elements, SWT.NONE);
label.setText("Commandname:");
text1 = new Text(elements, SWT.BORDER);
label1 = new Label(elements, SWT.NONE);
label1.setText("Confirmation:");
checkBox = new Button(elements, SWT.CHECK);
label2 = new Label(elements, SWT.NONE);
label2.setText("Effect:");
}
private void createSShell() {
GridLayout gridLayout5 = new GridLayout();
gridLayout5.numColumns = 2;
sShell = new Shell();
sShell.setText("Main");
createAll();
sShell.setLayout(gridLayout5);
createElements();
sShell.setSize(new Point(482, 260));
}
public void run()
{
try {
Start_VR vr = new Start_VR();
vr.start(text);
}catch (IOException ioe) {
System.out.println("I/O Error " + ioe);
} catch (PropertyException f) {
System.out.println("Problem configuring recognizer" + f);
} catch (InstantiationException f) {
System.out.println("Problem creating components " + f);
} catch (GrammarException ge) {
System.out.println(ge);
}
}
public static void main(String[] args) {
Fend thisClass = new Fend();
thisClass.createSShell();
thisClass.sShell.open();
Thread t=new Thread();
t.start();
while (!thisClass.sShell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
Leider führt er den Code in run() nicht aus, warum?
Am besten erklär ich etwas, also:
vr.start(text); < soll die ganze zeit während das Programm läuft auch arbeiten, wenn ein Ergebnis gefunden wurde, wird es in das textfeld geschrieben. Intern ist es in einer Schleife, bis ein bestimmtes Ereignis eintritt, also muss das nicht in einer Schleife in diesem Code realisiert werden. Es soll quasi die ganze Zeit parallel zum Programm laufen, wenn möglich später bei Bedarf auch manuell gestoppt werden.
Hoffe ihr könnt mir helfen