免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2109 | 回复: 0
打印 上一主题 下一主题

按钮实现JList的添加和删除选项 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-19 10:25 |只看该作者 |倒序浏览
其实这只不过是先前
java Swing List
的扩展。用两种不同的方法来实现相同的功能。
先前采用的是double click的方法来实现list之间item的添加和删除。今天说的是用按钮事件来完成任务。
其实两者都差不多,都是让list 与 dataModel 相关联,然后根据其 addData, removeIndex等函数来实现的。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.applet.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.TitledBorder;
public class ListButton extends JApplet {

     JList list1 =null;
     JList list2 = null;
     String[]strN = {"z"};
     String[] strM = {"a","b","c","d","e","f","g","h","i"};
     JButton btnAdd, btnDelete;
    private DataModel dataM= null,dataN=null;//你好
   
   
    public void ListButton(){
        
    }
     public void init(){
         try{
             listButtonInit();
         }catch (Exception e){
             e.printStackTrace();
         }
     }
     public void listButtonInit(){
         Container container = getContentPane();
         container.setLayout(null);
         
         dataM = new DataModel(strM);
         list1 = new JList(dataM);
         list1.setDragEnabled(true);
         list1.setBorder(BorderFactory.createTitledBorder("M_infor"));
          JScrollPane mPane = new JScrollPane(list1);
     mPane.setBounds(50, 20, 160, 200);
         container.add(mPane);
         dataN = new DataModel(strN);
         list2 = new JList(dataN);
         list2.setDragEnabled(true);
         list2.setBorder(BorderFactory.createTitledBorder("N_infor"));
          JScrollPane nPane = new JScrollPane(list2);
     nPane.setBounds(320,20,160,200);
         container.add(nPane);
     
         btnAdd = new JButton("ADD");
         btnAdd.setBounds(230, 80, 80, 25);
         container.add(btnAdd);
         btnAdd.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    int index = list1.getSelectedIndex();
                    System.out.println(index);
                    if(index == -1 || index >= dataM.getSize())
                        return;
            
                 dataN.addData(strM[index]);
                 list1.updateUI();
                 list2.updateUI();
                    }
                });
         btnDelete = new JButton("Delete");
     btnDelete.setBounds(230,160,80, 25);
     container.add(btnDelete);
     btnDelete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int index = list2.getSelectedIndex();
                System.out.println(index);
                if(index == -1 || index >= dataN.getSize())
                return;
                dataN.removeIndex(index);
                list2.updateUI();
                }
            });
     }
     class DataModel extends AbstractListModel{
         private Vector data = null;
         public DataModel(Object [] listData){
         data = new Vector();
         for(int i = 0; i  listData.length; i++){
         data.add(listData);
         }
         }
         public void addData(Object o){
         data.add(o);
         }
         public void removeIndex(int index){
         data.remove(index);
         }
         public int getSize() {
         return data.size();
         }
         public Object getElementAt(int index) {
         return data.get(index);
         }
         }
     
     public static void main(String[] args) {
            ListButton ls = new ListButton();
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.getContentPane().add(ls, BorderLayout.CENTER);
            frame.setTitle("Read Card");
            ls.init();
            ls.start();
            frame.setSize(480, 580);
            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
            Dimension frameSize = frame.getSize();
            frame.setLocation((d.width - frameSize.width) / 2,
                    (d.height - frameSize.height) / 2);
            frame.setVisible(true);
        }
}

这是效果图。
只不过编译的时候
E:\eclipse\workplace\ListWithButton>javac *.java
注意:ListButton.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
E:\eclipse\workplace\ListWithButton>javac -Xlint:unchecked *.java
ListButton.java:89: 警告:[unchecked] 对作为普通类型 java.util.Vector 的成员的 a
dd(E) 的调用未经检查
                 data.add(listData);
                         ^
ListButton.java:93: 警告:[unchecked] 对作为普通类型 java.util.Vector 的成员的 a
dd(E) 的调用未经检查
                 data.add(o);
                         ^
2 警告
还需要一些改进。
若阁下知道问题解决方法,不妨留个言。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/21684/showart_248348.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP