我有以下代码,想要将System.out.println(result);
打印到我的画面,但我不知道如何。我试过了txtField.setText(result)
,但这没效果。
我只想向{Form>
显示System.out.println(result);
Public static void main(String...args) throws IOException {
String line = null;
Pattern category = Pattern.compile("^\\[(.*?)\\]$"); // matches [Cars]
Pattern itemAndQuantity = Pattern.compile("^(\\w+)=(\\d+)$"); // matches Lamborghini=6
StringBuilder result = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader("D:/test.txt"))) {
while ((line = br.readLine()) != null) {
Matcher categoryMatcher = category.matcher(line);
Matcher itemMatcher = itemAndQuantity.matcher(line);
if (categoryMatcher.matches()) {
if (result.length() > 0) { // found new category, put on new line
result.append(System.getProperty("line.separator"));
}
String categoryName = categoryMatcher.group(1); // Cars
result.append(categoryName).append(": "); // Cars:
} else if (itemMatcher.matches()) {
String item = itemMatcher.group(1); // Lamborghini
String quantity = itemMatcher.group(2); // 6
result.append(item).append(" ") // Lamborghini
.append(quantity) // Lamborghini 6
.append(", "); // Lamborghini 6,
}
}
// we are done processing the file, output the result
System.out.println(result);
}
答案 0 :(得分:1)
编辑编辑:
以下答案是在我缺乏经验的时候写的,仅留给上下文。忽略它并仅考虑此编辑编辑中提供的信息。
你所拥有的是一个StringBuilder对象,其中包含你想要容器的文本。执行System.out.println(result)
后,它很可能会调用result
上的StringBuilder#toString方法,该方法从StringBuilder中提取此文本。调用txtField.setText()很可能不会执行此隐式转换,这就是它似乎不起作用的原因。
您要做的是调用txtField.setText(result.toString())
来获取StringBuilder中包含的文本,并将文本字段的文本设置为该文本。
请参阅:
编辑:
使用以下内容替换System.out.println:
JFrame frame = new JFrame();
JTextField text;
text = new JTextField(result.toString());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(text, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.setLocationRelativeTo(null);
首先,我不知道你是否已经导入了所有必要的软件包,如果你没有这很可能是你的第一个错误。
public static void main(String...args)
不
public static void main(String...args)
此外,我建议您在尝试创建try语句后添加以下代码:
catch(Exception e){
System.out.println("An exception occurred");
}
您可以添加任何内容而不是System.out.println(“发生异常”),但这是我能想到的最简单的通知您发生错误。
答案 1 :(得分:1)
根据您迄今为止提供给我们的信息,有几个问题:
Public static void main(String...args) throws IOException {
这里的P应该是小写的。你也应该包装可能会在try-catch语句中抛出IOException
的代码,而不是使用throws IOException
;这是一个很好的编码实践,因为可能发生的IOException
将无法处理......
try (BufferedReader br = new BufferedReader(new FileReader("D:/test.txt"))) {
您在catch
...
try
声明
txtField.settext(result)
它应该是txtField.setText(result.toString())
。请注意,T大写,toString()
返回String
中存储的StringBuilder
。