(希望)快速提问,我已经写出了一些代码来显示JOptionPane中文本文件中的信息,它可以工作,但是它为每一行创建了一个新框。
如何让它在一个JOptionPane中显示所有读取文本,而不是逐行显示。如果可能的话,无需重写整个事情。
Scanner inFile = null;
try {
inFile = new Scanner(new FileReader( curDir + "/scripts/sysinfo.txt"));
} catch (FileNotFoundException ex) {
Logger.getLogger(DropDownTest.class.getName()).log(Level.SEVERE, null, ex);
}
while(inFile.hasNextLine()){
String line = inFile.nextLine();
JOptionPane.showMessageDialog(null, line, "System Information", JOptionPane.INFORMATION_MESSAGE);
}
我环顾四周寻找类似的问题,但找不到任何适合这个问题的东西,并决定只是问一下,但如果我以某种方式错过某些东西,我会道歉,这最终会成为重复。
感谢您的帮助。
答案 0 :(得分:1)
您可以尝试使用StringBuilder创建单个大字符串,然后像这样显示此StringBuilder:
Scanner inFile = null;
StringBuilder builder = new StringBuilder();
try {
inFile = new Scanner(new FileReader(curDir + "/scripts/sysinfo.txt"));
} catch (FileNotFoundException ex) {
Logger.getLogger(DropDownTest.class.getName()).log(Level.SEVERE, null, ex);
}
while(inFile.hasNextLine()){
String line = inFile.nextLine();
builder.append(line);
builder.append("\n"); // add this for newlines
}
JOptionPane.showMessageDialog(null, builder, "System Information", JOptionPane.INFORMATION_MESSAGE);
答案 1 :(得分:1)
创建一个String并在while循环后显示该单个String。您在while循环中显示JOptionPane,这就是为什么它显示每行的输出。
Scanner inFile = null;
String message = null;
try {
inFile = new Scanner(new FileReader( curDir + "/scripts/sysinfo.txt"));
} catch (FileNotFoundException ex) {
Logger.getLogger(DropDownTest.class.getName()).log(Level.SEVERE, null, ex);
}
while(inFile.hasNextLine()){
message = message + inFile.nextLine();
}
JOptionPane.showMessageDialog(null, message, "System Information", JOptionPane.INFORMATION_MESSAGE);
此代码将在单个框中打印您的整个邮件,而不是多个。
答案 2 :(得分:0)
有时,我认为我们忘记了JOptionPane
API的强大功能。第二个(消息)参数是Object
,如果它是某种类型的组件,那么它只是添加到对话框中,例如......
JTextArea ta = new JTextArea(10, 20);
ta.setEditable(false);
try (Reader reader = new FileReader( curDir + "/scripts/sysinfo.txt")) {
ta.read(reader, "Some stuff");
} catch (IOException exp) {
ta.append(exp.getMessage());
exp.printStackTrace();
}
JOptionPane.showMessageDialog(null, new JScrollPane(ta), "System Information", JOptionPane.INFORMATION_MESSAGE);
这只是使用JTextArea
(和JScrollPane
)来显示文件中的文字。