java中字符串有空间时无法获取整个字符串
我对java还是新手,所以愚蠢的问题就来了。我一直在使用java中字符串有空间时无法获取整个字符串,java,string,swing,Java,String,Swing,我对java还是新手,所以愚蠢的问题就来了。我一直在使用JFrame、PrintWriter、File和Scanner开发一个简单的软件。为了创建和读取一个文本文件,我用您键入的名称保存该文件,然后将您输入的数据保存到JTextField,问题是:只要键入一个空格,它就不会将空格后的文本保存到.txt文件中: 输入 等待 输出: 等待 但如果我以这种方式手动输入文本: WriteToFile("waitFor it", name.getText()); // my function i
JFrame
、PrintWriter
、File
和Scanner
开发一个简单的软件。为了创建和读取一个文本文件,我用您键入的名称保存该文件,然后将您输入的数据保存到JTextField
,问题是:只要键入一个空格,它就不会将空格后的文本保存到.txt
文件中:
输入
等待
输出:
等待
但如果我以这种方式手动输入文本:
WriteToFile("waitFor it", name.getText());
// my function input text name
输出:
等待
这让我觉得我的功能可能不会导致这种情况,但我还是个笨蛋
Main.java
Database.java
有人能给我解释一下为什么会这样吗?
output = sc.next();
使用
参考:而不是
output=sc.next()代码>使用output=sc.nextLine()代码>。避免使用null
布局,像素完美的布局在现代ui设计中是一种错觉。影响零部件单个尺寸的因素太多,您无法控制。Swing的设计初衷是与布局管理器一起工作,丢弃它们将导致无休止的问题,您将花费越来越多的时间来纠正这些问题,而KeyListener
不是文本组件的最佳选择,相反,您应该使用ActionListener
来监视[Enter]键或aDocumentLstener
来侦听文档的更改,或aDocumentFilter
来筛选字段将接受的内容虽然这与问题无关,但我建议您阅读-您的方法应该以小写字母开头。@Mr.Derpinthoughton,因为坦率地说,影响组件大小的因素太多了,你“可能”认为你得到了控制,它“看起来”很好,但当屏幕和/或视频卡和/或分辨率和/或字体大小和/或DPI改变时,所有这些“漂亮”的布局都变成了垃圾。高效的UI布局实际上相当复杂,没有“真正的”解决方案,但是很多可能性,Swing提供的布局管理器API只是其中之一。iOS刚刚经历了4年的“重新设计”,引入了自动布局,因为他们最初只有两个屏幕尺寸:P
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) {
}
});
}
}
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;
}
}
output = sc.next();
output = sc.nextLine();