Je crée un programme de dessin qui lit les commandes à partir d'un fichier texte, lorsque le fichier est sélectionné, le programme doit valider les commandes pour les paramètres d'entrée corrects. le fichier texte ouvert dans le programme comprend;Swing/AWT filechooser validation graphique dessin
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)
Le problème que j'ai est que lors de l'ouverture du fichier texte dans le programme, il importe le fichier texte mais il ne valide pas dans le JTextArea
et tracer la ligne à choisi co-X/Y ordonnées. Quelqu'un pourrait-il me diriger dans la bonne direction?
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
}
}
Pour une meilleure aide plus tôt, poster un [mcve]. Pour en faire un MCVE, il doit être complet (en un seul copier/coller), il devra donc avoir les données codées en dur dans le code source sous la forme 'String' et inclure une méthode principale pour le mettre à l'écran. BTW - Je note que sauf pour la première question que vous avez posée, vous n'avez reçu aucune réponse. De plus, vous avez été avisé au moins une fois auparavant d'afficher un SSCCE (qui est l'équivalent d'un MCVE) et n'avez pas encore réussi à saisir l'avantage de le faire. Vous pourriez vouloir réfléchir sur ces points, si vous souhaitez obtenir des solutions réussies sur SO. –
Ouais, donc j'ai reconnu cependant, je ne suis pas l'utilisateur le plus familier quand il s'agit de Java, à partir de zéro n'est pas une option que ma mission est due dans une journée. – Adam
* ".. ma mission est due dans un jour" * Ensuite, vous devriez avoir commencé plus tôt et/ou utilisé une meilleure gestion du temps. Et à l'avenir, ne confondez pas vos problèmes avec les nôtres. Les personnes qui aident gratuitement, préfèrent généralement aider les autres avec de bonnes compétences en gestion du temps, au moins le temps de suivre leurs conseils. –