我正在尝试打开一个窗口并让它显示文件中的文本。但是当我运行它时,我只是得到一个空白的窗口。这是窗口的代码 - 我根本没有得到eclipse的错误。
package presentation;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import domain.Items;
import services.exceptions.ItemNotFoundException;
import services.itemservice.*;
public class ShowAllInventory extends JFrame {
/**
*
*/
private static final long serialVersionUID = -4498395613773129897L;
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ShowAllInventory frame = new ShowAllInventory();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the window frame.
*/
public ShowAllInventory() throws ItemNotFoundException {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
/**
* Load the inventory
*/
IItemsService service = new ItemsServiceImpl();
try {
Items items = service.getItems();
} catch (ItemNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println ("Items Not Found");
}
}
}
以下是代码调用的接口的代码 -
public Items getItems () throws ItemNotFoundException;
}
这是实施......
/**
* Getting Items from the database
* @return
* @throws ItemNotFoundException
*/
@Override
public Items getItems() throws ItemNotFoundException {
Items items = (Items) null;
try {
ObjectInputStream input = new
ObjectInputStream (new FileInputStream("itemdatabase"));
items = (Items)input.readObject();
input.close();
} catch (IOException ioe) {
System.out.println ("IOException");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return items;
}
答案 0 :(得分:3)
我不知道您的IItemsService
是否可以正确加载文件。但很可能你得到一个空白窗口,因为在你的代码中,我认为你忘了添加一个组件来显示项目。如果您的Items
作为List
使用。您可以使用JList
来显示它们。
Item[] items = ...// use your Items to populate Item to an array
JList itemList = new JList(items);
JScrollPane scrollPane = new JScrollPane(itemList);
scrollPane.setPreferredSize(new Dimension(300, 100)); //put your preferred size here
contentPane.add(scrollPane);
恕我直言,我认为你不应该抛出ItemNotFoundException
因为找不到任何物品应该是正常情况。 FileNotFoundException
应该是被抛到这里的人。
<强>已更新强>
如果您想使用JTextField
或JTextArea
,您需要使用以下内容:
...
Items items = service.getItems();
...
String itemContent = items.toString(); // you have to put meaningful information from class Items to this String
JTextArea itemDisplay = new JTextArea(itemContent);
// JTextField itemDisplay = new JTextField(itemContent);
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setPreferredSize(new Dimension(300, 100)); //put your preferred size here
contentPane.add(scrollPane);