Wie nehme ich Terminalergebnisse und setze eine JTextArea, um das Terminal zu lesen?
Ich habe kürzlich eine grafische Benutzeroberfläche fertiggestellt, in die ein Benutzer Kriterien eingeben und Ergebnisse erhalten kann, die diesen Bedingungen entsprechen. Das Programm funktioniert ergebnismäßig, aber ich habe Probleme, mein textField in meiner GUI zum Lesen meines Terminalfenster-Ergebnisses zu bringen. Mein Code für die GUI lautet wie folgt:
package project205;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class HouseListGUI extends JFrame
{
//GUI Components
HouseList availableHouses = new HouseList("src/houses.txt");
JLabel cLab = new JLabel("Criteria");
JLabel minLab = new JLabel("Min");
JLabel maxLab = new JLabel("Max");
JLabel pLab = new JLabel("Price");
JLabel aLab = new JLabel("Area");
JLabel bLab = new JLabel("Bedrooms");
JTextField pMin = new JTextField(10);
JTextField pMax = new JTextField(10);
JTextField aMin = new JTextField(10);
JTextField aMax = new JTextField(10);
JTextField bMin = new JTextField(10);
JTextField bMax = new JTextField(10);
JTextArea results = new JTextArea(20, 40);
JButton sButton = new JButton("Search");
JButton qButton = new JButton("Quit");
public HouseListGUI()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400,300);
setVisible(true);
Container c = getContentPane();
c.setLayout(new GridLayout(5,3,10,10));
c.add(cLab);
c.add(minLab);
c.add(maxLab);
c.add(pLab);
c.add(pMin);
c.add(pMax);
c.add(aLab);
c.add(aMin);
c.add(aMax);
c.add(bLab);
c.add(bMin);
c.add(bMax);
c.add(sButton);
c.add(results);
c.add(qButton);
sButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String pmn = pMin.getText();
String pmx = pMax.getText();
String amn = aMin.getText();
String amx = aMax.getText();
String bmn = bMin.getText();
String bmx = bMax.getText();
int pmn1 = Integer.parseInt(pmn);
int pmx1 = Integer.parseInt(pmx);
int amn1 = Integer.parseInt(amn);
int amx1 = Integer.parseInt(amx);
int bmn1 = Integer.parseInt(bmn);
int bmx1 = Integer.parseInt(bmx);
Criteria theCriteria = new Criteria(pmn1, pmx1, amn1, amx1, bmn1, bmx1);
availableHouses.printHouses(theCriteria);
results.setText("");
}
});
qButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
);
}
public static void main(String[] args)
{
//HouseList availableHouses = new HouseList("src/houses.txt");
HouseListGUI g1 = new HouseListGUI();
g1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
g1.setSize(1000,500);
g1.show();
}
}
Ich möchte die Ergebnisse der Codezeile availableHouses.printHouses (theCriteria); Dies gibt einen ungültigen Typ zurück, der in den textArea-Ergebnissen @ gedruckt werden sol
Ich habe versucht, mit type cast die Leere als Zeichenfolge zu werfen und dies in Ergebnisse umzuwandeln, dh:
results.setText((String)availableHouses.printHouses(theCriteria);
Aber Java hat das nicht.
TL; DR:
Wie kann man ein Terminal, das aus einem Methodenaufruf vom Typ void resultiert, als Typ String in eine textArea im Kontext einer GUI drucken?
zur weiteren Klärung:
mein Terminalfenster sieht so aus:
und meine GUI sieht so aus:
und ich möchte, dass sich mein Terminal in der mittleren Box in der letzten Reihe befindet.
Vielen Dank für alle Ratschläge / Tipps!