我一直在研究一個應用程序,在這個應用程序中設置了一個包含項目的類別列表,然後將其製作成文本文件。但是我爲它製作的GUI並不完全適用。我認爲錯誤位於名爲Cat(或「添加類別」)的JMenuItem中,或者以我顯示Categories(Update()方法)的方式出現。它應該要求一個名稱,製作一個以該名稱命名的類別並將其顯示在JScrollPane中,但不會出現。下面是代碼:GUI程序不能正常工作
public class GUIBuilder {
public JFrame frame;
public JPanel LeftPanel;
public JPanel RightPanel;
public JScrollPane scroll;
public JMenuBar bar;
public JMenu File;
public JMenu Add;
Inventory inv;
public void go() {
frame = new JFrame();
scroll = new JScrollPane();
bar = new JMenuBar();
File = new JMenu("File");
Add = new JMenu("Add...");
bar.add(File);
bar.add(Add);
JMenuItem Save = new JMenuItem(new AbstractAction("Save") {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent arg0) {
}
});
JMenuItem Load = new JMenuItem(new AbstractAction("Load") {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent arg0) {
}
});
JMenuItem Generate = new JMenuItem(new AbstractAction("Generate Text File") {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent arg0) {
}
});
File.add(Save);
File.add(Load);
File.add(Generate);
JMenuItem Cat = new JMenuItem(new AbstractAction("Add Category") {
private static final long serialVersionUID = 1L;
JFrame Cat;
public void actionPerformed(ActionEvent arg0) {
Cat = new JFrame("Add Category");
final JTextField name = new JTextField(15);
JButton Submit = new JButton(new AbstractAction("Submit") {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent arg0) {
String n = name .getText();
if (n != null) {
inv.addCategory(new Category(n));
pullThePlug();
GUIBuilder.this.Update();
}
}
});
Cat.setLayout(new BorderLayout());
Cat.add(name, BorderLayout.CENTER);
Cat.add(Submit, BorderLayout.SOUTH);
Cat.setSize(250, 150);
Cat.setVisible(true);
}
public void pullThePlug() {
WindowEvent wev = new WindowEvent(Cat, WindowEvent.WINDOW_CLOSING);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(wev);
}
});
JMenuItem item = new JMenuItem(new AbstractAction("Add Item") {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent arg0) {
}
});
Add.add(Cat);
Add.add(item);
frame.setJMenuBar(bar);
frame.setSize(500, 800);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(scroll);
inv = new Inventory();
}
public void Update() {
for (int i = 0; i < inv.categories.size(); i++) {
Category cat = inv.categories.get(i);
JPanel p = new JPanel();
JTextPane name = new JTextPane();
name.setText(cat.getName());
scroll.add(p);
}
}
}
在此先感謝;)
什麼是庫存和分類類? – Andremoniy
一提示:從小開始。如果GUI不工作,你的代碼非常大。從一個簡單的例子開始,一個可以推理的小型控制代碼。因此,您將學習如何使用工作代碼以漸進的方式組裝這些小東西來實現您想要的目標。 –
Invventory是一個存儲類別的類,它存儲項目本身,它們將顯示在gUI中。而實際上唯一不起作用的是目前的「添加類別」:) – lazyboy007