我是编程和处理这个图书馆系统项目的新手。 它使用链接列表来保存书籍和成员的详细信息。 它有两个功能,可以打印库中所有书籍的详细信息以及库的所有成员。
当我为我的项目制作GUI时,我无法在Frame中打印细节。 所以,我想用文件来做。
我已经成功打印了文件中的所有内容,但现在我的问题是我应该如何向用户显示文件?
如果用户按下"显示所有书籍"按钮,它应该自动打开相应的文件。 我尝试过搜索,但我无法弄清楚实际搜索的内容,因为我是初学者。
任何帮助都会非常感谢。
更新: 我尝试使用Desktop.getDesktop(文件),我收到此错误。
public class ApplicationStore
{
public int StoreId { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
public System.DateTime CreatedAt { get; set; }
public System.DateTime ModifiedAt { get; set; }
public string ModifiedBy { get; set; }
public virtual ICollection<StoreAction> Actions { get; set; }
}
public class StoreAction
{
public int ActionId { get; set; }
public int StoreId { get; set; }
public string ActionName { get; set; }
public string ActionRoute { get; set; }
public string RequestType { get; set; }
public virtual ApplicationStore Store { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ApplicationStore>().HasKey(m => new { m.StoreId, m.Name });
modelBuilder.Entity<ApplicationStore>().Property(t => t.StoreId).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
modelBuilder.Entity<ApplicationStore>().Property(m => m.Name).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None);
modelBuilder.Entity<StoreAction>().HasKey(m => new { m.ActionId });
modelBuilder.Entity<StoreAction>().Property(m => m.ActionId).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
// configures one-to-many relationship
modelBuilder.Entity<ApplicationStore>().HasMany(a => a.Actions).WithRequired(s => s.Store).HasForeignKey(s=> s.StoreId);
base.OnModelCreating(modelBuilder);
}
这是我的stringToLong方法
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Book issued successfully"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.parseLong(Long.java:631)
at RunProgram.stringToLong(RunProgram.java:217)
at RunProgram.actionPerformed(RunProgram.java:196)
这是打印细节的方法
private static long stringToLong(String stringObject){
return Long.parseLong(stringObject.trim());
}
这就是我在actionListener方法中调用此方法的方法。
void printBooksIssued(long cpr) throws IOException{
File file = new File("d:/work/test.txt");
System.setOut(new PrintStream(new FileOutputStream(file)));
int index = 0;
if (searchMember(cpr) == -1)
System.out.println("Member doesn't exist.");
LibMember m = membersList.get(index);
while (index < sizeMembersList() ){
if (m.getCprNum() == cpr){
System.out.println(Arrays.toString(m.getBooksIssued()));
return;
}
index++;
if (index < sizeMembersList())
m = membersList.get(index);
}
Desktop.getDesktop().open(file);
}
我不明白的是,字符串&#34; Book发布的numberFormatException的第一个错误与此按钮和文本字段完全分开。那为什么它会给出错误。
case "Print details of books issued to member": {
long cprNum = stringToLong(cpr.getText());
try {
ITLib.printBooksIssued(cprNum);
}
catch (IOException e1){
fName.setText("Error. Make sure CPR number is correct and try again.");
}
}
答案 0 :(得分:0)
如果您使用的是Java并使用后缀&#34; .txt&#34;保存文件,则可以使用Desktop.getDesktop()
。
以下是一个示例,它将弹出文本的默认系统编辑器:
File file = new File("d:/work/test.txt");
System.setOut(new PrintStream(new FileOutputStream(file)));
System.out.println("Testing 1");
System.out.println("Testing 2");
Desktop.getDesktop().open(file);
在Windows上,这将使用&#34; text.txt&#34;打开notepad.exe。文件。