2016-02-18 3 views
2

Я все еще новичок в java, поэтому немой вопрос идет. Я работал над простым программным обеспечением, используя JFrame, PrintWriter, File и Scanner для создания и чтения текстового файла. Я сохраняю файл с именем, которое вы набрали, а затем с данными, введенными в JTextField, проблема в следующем: Как только вы наберете одно место, которое он не сохраняет текст после пробела в .txt файла:Не получается целая строка, когда строка имеет пробел в java

ввода

Waitfor это

WriteToFile(textarea.getText(), name.getText()); 
// my function input text   name 

Выход:

Waitfor

Но если я ввод текста вручную таким образом:

WriteToFile("waitFor it", name.getText()); 
// my function input text   name 

Выход:

Waitfor так ли

что приводит меня к мысли, что моя функция не может быть причиной этого, но я снова нуб.

Main.java

package creator; 

import java.awt.Font; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTextField; 


import library.Database; 

public class Main extends Database{ 

    public static void main(String[] args) { 

     JFrame frame = new JFrame(); 

     JButton button = new JButton("Erase"); 
     JButton button2 = new JButton("Add"); 
     JButton button3 = new JButton("Save to Database"); 

     Font font = new Font("Courier", Font.BOLD, 12); 
     Font font2 = new Font("Courier", Font.BOLD, 14); 

     final JTextField name = new JTextField(); 
     final JTextField editorPane = new JTextField(); 
     final JTextField textarea = new JTextField(); 

     final JScrollPane scroll = new JScrollPane (textarea, 
     JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 

     frame.setTitle("Array Creator"); 
     frame.setSize(401, 250); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLocationRelativeTo(null); 
     frame.setResizable(false); 
     frame.setLayout(null); 

     frame.add(button); 
     frame.add(name); 
     frame.add(button2); 
     frame.add(button3); 
     frame.add(editorPane); 
     frame.add(scroll); 

     button.setBounds(0, 200, 80, 22); 
     name.setBounds(82, 200, 80, 22); 
     button2.setBounds(164, 200, 80, 22); 
     button3.setBounds(246, 200, 148, 22); 
     editorPane.setBounds(100,175,200,18); 
     scroll.setBounds(50, 10, 300, 160); 
     textarea.setEditable(false); 

     button.setFont(font); 
     name.setFont(font); 
     button2.setFont(font); 
     button3.setFont(font); 
     editorPane.setFont(font); 
     textarea.setFont(font2); 

     textarea.setText("["); 

     frame.setVisible(true); 

     button.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       textarea.setText("["); 
       editorPane.setText(""); 
      } 
     }); 
     button2.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       textarea.setText(textarea.getText()+"["+editorPane.getText()+"],"); 
       editorPane.setText(""); 
      } 
     }); 
     button3.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       String temp = textarea.getText(); 
       temp = temp.substring(0, temp.length()-1); 
       textarea.setText(temp+"]"); 
       editorPane.setText(""); 
       WriteToFile(textarea.getText(), name.getText()); 
      } 
     }); 
     name.addKeyListener(new KeyListener() { 
      public void keyTyped(KeyEvent arg0) { 
      } 

      public void keyReleased(KeyEvent arg0) { 
       textarea.setText(readFile(name.getText())); 
      } 

      public void keyPressed(KeyEvent arg0) { 
      } 
     }); 

    } 

} 

Database.java

package library; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.PrintWriter; 
import java.io.UnsupportedEncodingException; 
import java.util.Scanner; 

public class Database { 

    public static String WriteToFile(String data, String name){ 
     String output = "ERROR"; 
     PrintWriter writer = null; 
     try { 
      writer = new PrintWriter(name+".txt", "UTF-8"); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 
     writer.println(data); 
     writer.close(); 

     File file = new File(name+".txt"); 
     try { 
      @SuppressWarnings("resource") 
      Scanner sc = new Scanner(file); 
      output = sc.next(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 

     return output; 
    } 

    public static String readFile(String name){ 
     String output = "["; 
     File file = new File(name+".txt"); 
     try { 
      @SuppressWarnings("resource") 
      Scanner sc = new Scanner(file); 
      output = sc.next(); 
     } catch (FileNotFoundException e) { 

     } 

     return output; 
    } 

} 

мая кто-то предоставить мне объяснения о том, почему это?

+2

Вместо 'Выход = sc.next();' 'использовать выход = sc.nextLine() ; '. – Satya

+0

@ Satya это сработало, спасибо dude/dudette +1 – Kyle

+2

Избегайте использования макетов 'null', идеальные макеты пикселей - это иллюзия в современном дизайне ui. Слишком много факторов, которые влияют на индивидуальный размер компонентов, ни один из которых вы не можете контролировать.Swing был разработан для работы с менеджерами компоновки в ядре, отбросив их, не будет конца проблем и проблем, которые вы будете тратить все больше времени на исправление. – MadProgrammer

ответ

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