Java 使用JApplet的链表

Java 使用JApplet的链表,java,swing,japplet,Java,Swing,Japplet,这是我大学的作业之一。我有一个使用JApplet的链表,我首先要面对的问题是,我希望在单击“插入前”按钮后,新按钮应该放在面板上的任何按钮之前,而不是最后一个按钮(例如-值为5的按钮已存在,单击“插入”前按钮后,创建的新按钮应放在按钮5之前)第二个问题是,单击Del_Front按钮后,第一个按钮将被删除,而不是最后一个按钮,最后搜索按钮无法找到面板中的按钮。欢迎解决方案。下面是代码 public interface BasicLinkedList1<itemtype> {

这是我大学的作业之一。我有一个使用JApplet的链表,我首先要面对的问题是,我希望在单击“插入前”按钮后,新按钮应该放在面板上的任何按钮之前,而不是最后一个按钮(例如-值为5的按钮已存在,单击“插入”前按钮后,创建的新按钮应放在按钮5之前)第二个问题是,单击Del_Front按钮后,第一个按钮将被删除,而不是最后一个按钮,最后搜索按钮无法找到面板中的按钮。欢迎解决方案。下面是代码

public interface BasicLinkedList1<itemtype>  
{
   public void insert_front(itemtype item);
   public void delete_front();
   public void insert_rear(itemtype item);
}
public interface listsearch<itemtype>  
{
   public void search(itemtype v);
}


import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
/* <applet code="LinkedListApplet.class" height=300 width=500></applet>*/
public class LinkedListApplet extends JApplet implements listsearch<JButton>,BasicLinkedList1<JButton>
{
    JButton Insert_Front,Insert_Rear,Del_Front,search;
    JLabel label;JPanel npanel,spanel;JTextField field;
    LinkedList<JButton> linklist;
    public void init()
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                makegui();
            }
        });
    }
    void makegui()
    {
        linklist = new LinkedList<JButton>();
        npanel = new JPanel();
        spanel = new JPanel();
        label = new JLabel();
        field = new JTextField(40);
        spanel.setLayout(new FlowLayout());
        npanel.setLayout(new GridLayout(2,5));
        listener list = new listener();
        Insert_Front = new JButton("Insert_Front");
        Insert_Front.addActionListener(list);
        npanel.add(Insert_Front);
        Insert_Rear = new JButton("Insert_Rear");
        Insert_Rear.addActionListener(list);//adding listener for buttons
        npanel.add(Insert_Rear);
        Del_Front=new JButton("Del_Front");
        Del_Front.addActionListener(list);
        npanel.add(Del_Front);
        search=new JButton("search");
        search.addActionListener(list);
        npanel.add(search);
        npanel.add(field);
        npanel.add(label,SwingUtilities.CENTER);
        add(npanel,BorderLayout.NORTH);
        add(spanel,BorderLayout.CENTER);
    }
    private class listener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String cmd=e.getActionCommand(),text="";
            System.out.println(cmd);
            if(cmd.equals("Insert_Front"))
            {
                text=field.getText();
                if(text.length()==0)
                    label.setText("enter some value!!!");
                else
                {
                    label.setText("node successfully created");  
                    insert_front(new JButton(text));
                }
            }
            else if(cmd.equals("Insert_Rear"))
            {
                text=field.getText();
                if(text.length()==0)
                    label.setText("enter some value!!!");
                else
                {
                    label.setText("node successfully created");  
                    insert_rear(new JButton(text));
                }
            }
            else if (cmd.equals("Del_Front"))
            {
                label.setText("node successfully destroyed");  
                delete_front();
            }
            else if(cmd.equals("search"))
                search(new JButton(text));
        }        
    }

    public void search(JButton b)
    {
        if(linklist.contains(b))
        {
            label.setText("element found:"+b.getText());
        }
        else
            label.setText("no such elements");
    }

    public void insert_front(JButton item)
    {
        linklist.addFirst(item);
        ListIterator<JButton> itr=linklist.listIterator();
        JButton b=itr.next();
        spanel.add(b);
    }

    public void delete_front()
    {
        JButton b=null;
        if(linklist.size()==0)
            label.setText("cannot delete node,list is empty!");
        else
        {
            b=linklist.removeFirst();
            spanel.remove(b);
        }
    }

    public void insert_rear(JButton item)
    {
        linklist.addLast(item);JButton s=null;
        ListIterator<JButton> itr=linklist.listIterator();
        while(itr.hasNext())
            s=itr.next();
        JButton b=s;
        spanel.add(b);
    }
}
公共接口基本列表1
{
公共作废插入物(项目类型项目);
公共无效删除_front();
公共无效插入物(项目类型项目);
}
公共接口列表搜索
{
公共无效搜索(项目类型v);
}
导入java.awt.*;
导入javax.swing.*;
导入java.util.*;
导入java.awt.event.*;
/* */
公共类LinkedListApplet扩展了JApplet,实现了listsearch,BasicLinkedList1
{
b按钮插入前、插入后、删除前、搜索;
JLabel标签;JPanel npanel,spanel;JTextField字段;
链接列表;
公共void init()
{
invokeLater(新的Runnable()
{
公开募捐
{
makegui();
}
});
}
void makegui()
{
linklist=newlinkedlist();
npanel=新的JPanel();
spanel=新的JPanel();
label=新的JLabel();
字段=新的JTextField(40);
spanel.setLayout(新的FlowLayout());
npanel.setLayout(新网格布局(2,5));
侦听器列表=新侦听器();
插入前=新的按钮(“插入前”);
插入\u Front.addActionListener(列表);
N面板添加(插入前面板);
Insert_Rear=新按钮(“Insert_Rear”);
插入_Rear.addActionListener(列表);//为按钮添加侦听器
npanel.添加(插入后面);
Del_Front=新按钮(“Del_Front”);
Del_Front.addActionListener(列表);
n新增(德鲁前);
搜索=新按钮(“搜索”);
search.addActionListener(列表);
npanel.add(搜索);
npanel.add(字段);
npanel.add(标签,SwingUtilities.CENTER);
添加(npanel,BorderLayout.NORTH);
添加(spanel、BorderLayout.CENTER);
}
私有类侦听器实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
字符串cmd=e.getActionCommand(),text=“”;
System.out.println(cmd);
if(cmd.equals(“插入前”))
{
text=field.getText();
如果(text.length()==0)
label.setText(“输入一些值!!!”);
其他的
{
label.setText(“已成功创建节点”);
插入前(新按钮(文本));
}
}
else if(命令等于(“插入后面”))
{
text=field.getText();
如果(text.length()==0)
label.setText(“输入一些值!!!”);
其他的
{
label.setText(“已成功创建节点”);
插入后部(新的按钮(文本));
}
}
else if(命令等于(“Del_Front”))
{
label.setText(“节点已成功销毁”);
删除_front();
}
else if(cmd.equals(“search”))
搜索(新的JButton(文本));
}        
}
公共无效搜索(JButton b)
{
if(linklist.contains(b))
{
label.setText(“找到的元素:+b.getText());
}
其他的
label.setText(“无此类元素”);
}
公共空白插页前(JButton项目)
{
linklist.addFirst(项目);
ListIterator itr=linklist.ListIterator();
JButton b=itr.next();
加上(b);
}
公共作废删除_front()
{
JButton b=null;
if(linklist.size()==0)
label.setText(“无法删除节点,列表为空!”);
其他的
{
b=linklist.removeFirst();
spanel.移除(b);
}
}
公共空插件(后)(按钮项)
{
linklist.addLast(item);JButton s=null;
ListIterator itr=linklist.ListIterator();
while(itr.hasNext())
s=itr.next();
JButton b=s;
加上(b);
}
}

欢迎来到SO:-)请格式化您的代码-按原样,它是完全不可读的。我希望我所做的格式化是正确的!!尽管有一个旁注,但在从任何位置添加和删除组件时,IMHO,我认为对于添加组件,您可以每次使用添加组件。对于删除,您可以简单地使用。尽管在两个组件之间添加插件的问题仍然存在,因此我想最好在
JPanel
上绘制
paint
。您应该阅读并遵循以下步骤。这将使您的代码更易于阅读(如果
语句中没有大括号,这是一个需要改进的领域的好例子).thanx表示欢迎。@kleopatra和thanx表示格式化代码。@Gagandeep感谢您的解决方案,但这并不能解决问题。。此外,“删除前”按钮不会删除所需的按钮,而是删除插入的最后一个按钮。。。