好的,我现在遇到的问题是我在“公共类 MagazineView 扩展 Applet {”处收到错误,我得到“空白字段 Jlist 可能尚未初始化”
这是我的 GUI 小程序
public class MagazineView extends Applet {
Button button, button2;
final MagazineList Jlist;
public void init() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//NORTH PANEL
JPanel northPanel = new JPanel(new BorderLayout());
JPanel topPanel = new JPanel(new BorderLayout());
JLabel label = new JLabel("Add Magazine: ");
final JTextField text1 = new JTextField();
JButton button = new JButton("List Magazines");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final String name=text1.getText();
Magazine mag = new Magazine(name);
Jlist.insert(mag);
}
});
topPanel.add(label, BorderLayout.LINE_START);
topPanel.add(text1, BorderLayout.CENTER);
topPanel.add(button, BorderLayout.LINE_END);
//CENTER PANEL
JPanel centerPanel = new JPanel(new BorderLayout());
JTextArea atext = new JTextArea();
centerPanel.add(atext, BorderLayout.CENTER);
//BOTTOM PANEL
JPanel bottomPanel = new JPanel(new BorderLayout());
JLabel label2 = new JLabel("Delete All: ");
JTextField text2 = new JTextField();
JButton button2 = new JButton("Delete Magazine");
bottomPanel.add(label2, BorderLayout.LINE_START);
bottomPanel.add(text2, BorderLayout.CENTER);
bottomPanel.add(button2, BorderLayout.LINE_END);
northPanel.add(topPanel, BorderLayout.NORTH);
northPanel.add(centerPanel, BorderLayout.CENTER);
northPanel.add(bottomPanel, BorderLayout.SOUTH);
//Frame
frame.add(northPanel);
frame.setSize(600, 400);
frame.setVisible(true);
}
}
这是我的方法
public class MagazineList {
private MagazineNode list;
public MagazineList(){
list=null;
}
public void insert (Magazine mag){
MagazineNode node = new MagazineNode(mag);
node.next = list;
list = node;
}
public void add (Magazine mag){
MagazineNode node = new MagazineNode (mag);
MagazineNode current;
if(list==null)
list = node;
else
{
current = list;
while(current.next !=null)
current = current.next;
current.next = node;
}
}
public void DeleteNode(Magazine mag)
{
if(list == null) throw new RuntimeException("Cannot delete, Empty List");
if( list.magazine.equals(mag) )
{
list = list.next;
return;
}
MagazineNode cur = list;
MagazineNode prev = null;
while(cur != null && !cur.magazine.equals(mag) )
{
prev = cur;
cur = cur.next;
}
if(cur == null) throw new RuntimeException("Cannot delete, not in list");
//delete cur node
prev.next = cur.next;
}
public String toString(){
String result ="";
MagazineNode current = list;
while (current !=null){
result += current.magazine + "\n";
current = current.next;
}
return result;
}
private class MagazineNode {
public Magazine magazine;
public MagazineNode next;
public MagazineNode(Magazine mag){
magazine = mag;
next = null;
}
}
}