Ich mache ein Zeichenprogramm, das Befehle aus einer Textdatei liest, wenn die Datei ausgewählt wird, sollte das Programm die Befehle für korrekte Eingabe Parameter validieren. Die im Programm geöffnete Textdatei enthält:Swing/AWT filechooser Validierung Grafik Zeichnung
Move 100 100 // (move pen to X Y)
MIVE 100 50 // (Invalid comamnd spelt incorrectly)
move x y // (invalid command not an integer)
Line 20 100 // (draw a line at X Y)
Das Problem, das ich habe ist, dass die Textdatei in das Programm beim Öffnen, wird die Textdatei zu importieren, aber es wird nicht in die JTextArea
Validieren und die Zeile an ausgewählten X/Y co- Zeichnung Ordinaten. Kann mir jemand in die richtige Richtung zeigen?
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Instructionpanel extends JPanel {
JTextArea instructions;
// Move line text clear
public Instructionpanel(GraphicsPanel graphicspanel) {
instructions = new JTextArea(
"This is where the instructions will displayed", 10, 50); // Rows
// *
// columns
instructions.setLineWrap(true);
instructions.setWrapStyleWord(true);
instructions.setEditable(true);
JScrollPane areaScrollPane = new JScrollPane(instructions);
areaScrollPane
.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
add(areaScrollPane);
// add(instructions);
}
public void processFile(File file) {
Scanner scan = null;
try {
scan = new Scanner(file);
} catch (FileNotFoundException el) {
el.printStackTrace();
}
String allInstructions = "";
String allInstructions1 = "";
String instruction = "";
while (scan.hasNext()) {
instruction = scan.nextLine() + "\n";
// check or validate the instruction
allInstructions1 += validateInstruction(instruction);
}
instructions.setText(allInstructions1);
}
public String validateInstruction(String orig) {
String returnString = orig;
// Do all the checking
// Convert string to an array
String command = "";
String[] instructionArray = orig.split(" ");
int x, y = 0;
switch(instructionArray[0])
{
case "MOVE":
// Check there three parameters
doMove(instructionArray); {
// And they are integers
instructions = new JTextArea(" Incorrect parameter type i.e 100");
instructions = new JTextArea(":incorrect number of parameters i.e Line 100 200");
try {
GraphicsPanel.setPos (Integer.parseInt(instructionArray[1]),Integer.parseInt(instructionArray[2]));
}
catch (NumberFormatException e)
{
instructions = new JTextArea(" only numbers are allowed ");
}
}
break;
case "LINE":
doLine (instructionArray);
// Check there three parameters
if (instructionArray.length != 3) {
// And they are integers
instructions = new JTextArea(" Incorrect parameter type i.e 100");
instructions = new JTextArea(":incorrect number of parameters i.e Line 100 200");
try {
GraphicsPanel.drawLine (Integer.parseInt(instructionArray[1]),Integer.parseInt(instructionArray[2]));
} catch (NumberFormatException e) {
instructions = new JTextArea(" only numbers are allowed ");
}break;
}}
return orig;}
private void doLine(String[] instructionArray) {
// TODO Auto-generated method stub
}
private void doMove(String[] instructionArray) {
// TODO Auto-generated method stub
}
}
Für bessere Hilfe früher, post ein [MCVE]. Um es zu einem MCVE zu machen, muss es Complete sein (in einer einzigen Kopie/Paste), so dass die Daten im Quellcode als "String" fest codiert sein müssen und eine Hauptmethode enthalten müssen, um es auf den Bildschirm zu bringen. BTW - Ich bemerke, dass Sie bis auf die erste Frage, die Sie gestellt haben, keine Antworten erhalten haben. Darüber hinaus wurde Ihnen bei mindestens einer früheren Gelegenheit geraten, eine SSCCE (die dem MCVE entspricht) zu veröffentlichen, und es ist bisher nicht gelungen, den Vorteil davon zu erkennen. Vielleicht möchten Sie über diese Punkte nachdenken, wenn Sie erfolgreiche Lösungen für SO wünschen. –
Ja, also habe ich bestätigt, aber ich bin nicht der am meisten vertraute Benutzer, wenn es um Java geht, von vorne anfangen ist keine Option, die meine Aufgabe an einem Tag fällig ist. – Adam
* ".. meine Aufgabe ist an einem Tag fällig" * Dann sollten Sie früher angefangen haben und/oder ein besseres Zeitmanagement verwendet haben. Und verwechseln Sie in Zukunft Ihre Probleme nicht mit unseren. Menschen, die kostenlos helfen, ziehen es im Allgemeinen vor, anderen mit guten Zeitmanagementfähigkeiten zu helfen, zumindest genug Zeit, um ihren Ratschlägen zu folgen. –