Ich möchte wissen, wie kann ich meine JTextArea
global und wie kann ich das schreiben mit dem Ergebnis, das ich als eine ganze Zahl bekommen?Java, wie man JTextArea aus verschiedenen Klassen zugänglich macht und in Integer schreibt
Ich versuche, Programm für Warteschlangen mit verknüpften Link-Implementierung zu tun, aber ich verwende nicht tatsächlich die LinkedList
Klasse. Ich habe zwei verschiedene Klassen in meinem Projekt. Es gibt eine Klasse, die deneme2
ist. In dieser Klasse habe ich die Queue-Methoden. In der zweiten Klasse habe ich die JFrame
, also würde ich gerne meine Enqueue und Enqueue Ergebnisse in bekommen. Bis jetzt konnte ich nur println
benutzen, aber ich schaffe es nicht, es in die zu bekommen.
Das ist mein deneme4
Klasse
public class Deneme4 extends JFrame {
public static void main(String a[]) throws FileNotFoundException {
SecondFrame frame = new SecondFrame();
}}
Dies ist die Queue
Klasse für die GUI Ich habe versucht,
public class Queue {
public static interface MessageOutput {
void appendMessage(String message);
void appendHead(String message);
}
private MessageOutput msgOutput = new MessageOutput() {
@Override
public void appendMessage(String message) {
System.out.println(message);
}
@Override
public void appendHead(String head) {
System.out.println(head);
}
};
public void setMessageOutput(MessageOutput value) {
msgOutput = value;
}
public void setHeadOutput(MessageOutput value) {
msgOutput = value;
}
private Node front, rear;
private int currentSize;
private class Node {
int data;
Node next;
}
public Queue() {
front = null;
rear = null;
currentSize = 0;
}
public boolean isEmpty() {
if (currentSize == 0) {
msgOutput.appendMessage("Que is Empty\n");
}
return currentSize == 0;
}
public int dequeue() {
int data = front.data;
front = front.next;
if (isEmpty()) {
rear = null;
}
currentSize--;
msgOutput.appendMessage(data + " removed from the queue\n");
return data;
}
public int enqueue(int data) throws FileNotFoundException {
Node oldRear = rear;
rear = new Node();
rear.data = data;
rear.next = null;
if (isEmpty()) {
front = rear;
} else {
oldRear.next = rear;
}
currentSize++;
msgOutput.appendMessage(data + " added to the queue\n");
return data;
}
public int queueSize() {
msgOutput.appendMessage("Size of the Que is" + currentSize + "\n");
return currentSize;
}
public int getHead() {
int data = front.data;
msgOutput.appendHead("Head of the Que is " + data + "\n");
return data;
}}
und das ist mein QueueFrame zu machen, die ich will, wenn die Schaltfläche angeklickt haben die Ausgänge Wert zu txt1, aber scheint es nicht zu tun
public class QueueFrame extends JFrame implements Queue.MessageOutput {
private JTextArea txt1;
private JTextArea txt2;
private JTextArea txt3;
private JButton b1;
private JButton b2;
private Queue queue = new Queue();
public static interface MessageOutput {
void appendMessage(String message);
void appendHead(String message);
}
private MessageOutput msgOutput = new MessageOutput() {
@Override
public void appendMessage(String message) {
System.out.println(message);
}
@Override
public void appendHead(String head) {
System.out.println(head);
}
};
public void setMessageOutput(MessageOutput value) {
msgOutput = value;
}
public void setHeadOutput(MessageOutput value) {
msgOutput = value;
}
@Override
public void appendHead(String head) {
txt2.append(head);
}
public QueueFrame() throws FileNotFoundException {
JFrame frame = new JFrame();
b1 = new JButton("Load up the Que");
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
try {
Scanner s = new Scanner(new File("list.txt"));
while (s.hasNext()) {
queue.setMessageOutput((Queue.MessageOutput) queue.
queue.enqueue(s.nextInt());
}
s.close();
queue.queueSize();
queue.getHead();
} catch (FileNotFoundException ex) {
Logger.getLogger(QueueFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
b2 = new JButton("Head of the Que");
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
queue.getHead();
}
});
txt1 = new JTextArea();
txt2 = new JTextArea();
txt3 = new JTextArea();
txt1.setEditable(false);
txt2.setEditable(false);
txt3.setEditable(true);
b1.setBounds(50, 100, 180, 100);
b2.setBounds(50, 300, 180, 100);
txt1.setBounds(600, 100, 200, 600);
txt2.setBounds(300, 300, 180, 100);
txt3.setBounds(300, 100, 180, 100);
frame.add(b1);
frame.add(b2);
frame.add(txt1);
frame.add(txt2);
frame.add(txt3);
frame.setLayout(null);
frame.setSize(1000, 1500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}}
"* ho kann ich meine JTextArea global machen" * - Sie sollten so weit wie möglich vermeiden, globale Variablen zu jeder Zeit zu verwenden. Sie sollten immer vorsichtig sein, Benutzeroberflächenelemente verfügbar zu machen, da andere von ihnen auf unerwartete Weise geändert werden können (z. B. wenn Sie sie aus ihrem Container entfernen). Stattdessen konzentrieren sich auf die Verwendung von „Beobachter-Muster“, mit denen Sie Interesse Klassen registrieren, die die Meldungen erzeugen kann, wenn einige Zustand – MadProgrammer