2017-01-07 8 views
-1

Я делаю программу рисования, которая считывает команды из текстового файла, когда файл выбран, программа должна проверять команды для правильных параметров ввода. текстовый файл, открытый в программе, включает;Графический рисунок валидации виджета/AWT-файла

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) 

Проблема, которую я имею в том, что при открытии текстового файла в программу, она импортирует текстовый файл, но это не проверка его в JTextArea и рисования линии в выбранном X/Y со- ординаты. Может ли кто-нибудь указать мне в правильном направлении?

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 
} 
} 
+0

Чтобы лучше помочь, отправьте сообщение [mcve]. Чтобы сделать его MCVE, он должен быть завершен (в одной копии/вставке), поэтому ему нужно будет жестко закодировать данные в исходном коде как «String» и включить основной метод для размещения на экране. Кстати. Я отмечаю, что за исключением первого вопроса, который вы задали, вы не получили никаких ответов. Кроме того, вам сообщили, по крайней мере, один предыдущий случай опубликовать SSCCE (что эквивалентно MCVE) и до сих пор не смогли понять преимущества этого. Возможно, вам захочется задуматься над этими моментами, если вы хотите получить успешные решения на SO. –

+0

Да, я признал, однако, что я не самый знакомый пользователь, когда дело доходит до java, начиная с нуля - это не вариант моего назначения в течение дня. – Adam

+1

* ".. мое задание должно состояться через день" * Затем вам следует начать раньше и/или использовать лучшее управление временем. И в будущем, пожалуйста, не ошибайтесь в своих проблемах, для наших. Люди, которые помогают бесплатно, обычно предпочитают помогать другим с хорошими навыками управления временем, по крайней мере, достаточно времени, чтобы следовать их советам. –

ответ

0

С быстрым взглядом я могу сказать, что ваш String[] instructionArray вероятно создан только один элемент с orig.split(" ") имеет двойное пространство в качестве разделителя, поэтому instructionArray[0] содержит всю строку, так как ваши маркеры разнесены только один пробел. Поэтому ни один из ваших случаев в validateInstruction(String orig) не соответствует.

На данный момент вы можете уйти с заменой двойного пространства на одно место в вызове orig.split(" ").

Это, как говорится, я не могу гарантировать, что это решит все возможные проблемы, которые могут возникнуть после изменения.

 Смежные вопросы

  • Нет связанных вопросов^_^