Java Swing JTable

    
        try
        {
            BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.osLookAndFeelDecorated;
            //UIManager.put("RootPane.setupButtonVisible", false);
            org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper.launchBeautyEyeLNF();
            
        }
        catch(Exception e)
        {
            //TODO exception
        }
        
        // 创建窗体对象
        JFrame jFrame =new JFrame();
        // 设置窗体大小
        jFrame.setSize(800, 500);
        // 设置窗体全屏展示
        //jFrame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        // 设置窗体显示位置
        //jFrame.setLocation(100,200);
        // 设置窗体显示正中间
        jFrame.setLocationRelativeTo(null);
        // 设置窗体标题
        jFrame.setTitle("窗体标题");
        // 设置窗体不可全屏显示
        //jFrame.setResizable(false);
        // 设置窗体关闭后退出程序
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置此窗口是否应该始终位于其他窗口上方
        jFrame.setAlwaysOnTop(true);
        // 设置窗体图标
        jFrame.setIconImage(new ImageIcon(HelloWorld.class.getResource("/images/book.png")).getImage());
        

        
        JPanel jPanel =new JPanel(null);
        
        
        Object[][] data=new Object[][] {
            {new Boolean(false),"1","zhangshan","24","男"},
            {new Boolean(false),"2","lisi","25","女"},
            {new Boolean(false),"3","lisi","25","女"},
            {new Boolean(false),"4","lisi","25","女"},
            {new Boolean(false),"5","lisi","25","女"},
            {new Boolean(false),"6","lisi","25","女"},
            {new Boolean(false),"7","lisi","25","女"}
        };    
        Object[] column=new Object[] {"请选择","序号","姓名","年龄","性别"};
        
        DefaultTableModel model =new DefaultTableModel(data,column) {
            // 重写getColumnClass方法的目的是为了在第一列添加复选框,如果不需要可以不重写
            @Override
            public Class<?> getColumnClass(int columnIndex) {
                if(columnIndex==0) {
                    return Boolean.class;
                }else {
                    return Object.class;
                }
            }
            
        };
        
        // 创建表格,并添加数据,并设置单元格不可编辑
        JTable table =new JTable(model) {
            public boolean isCellEditable(int row,int column) {
                if(column==0) {
                    return true;
                }
                return false;
            }
        };
        
        // 设置Tbody的字体
        table.setFont(new Font("微软雅黑",Font.PLAIN,15));
        // 设置Tbody的td高度
        table.setRowHeight(40);
        // 设置Thead的字体
        table.getTableHeader().setFont(new Font("微软雅黑",Font.PLAIN,15));
        // 设置某个列的宽度
        table.getColumnModel().getColumn(2).setPreferredWidth(200);
        // 设置表格一次只能选中一行数据
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
        
        // 添加数据
        model.addRow(new Object[] {new Boolean(false),"8","JACK","22","男"});
        
        
        
        
        // 数据回显 修改数据    
        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            
            @Override
            public void valueChanged(ListSelectionEvent e) {
                // 只监听变化事件
                if(e.getValueIsAdjusting()==true) {
                    // 获取被选中的行返回当前行号
                    int row =table.getSelectedRow();
                    // 获取每个单元格的值
                    String id=(String) table.getValueAt(row, 1);
                    String name=(String) table.getValueAt(row, 2);
                    String age=(String) table.getValueAt(row, 3);
                    String gender=(String) table.getValueAt(row, 4);
                    System.out.println(id +',' +name +","+age +"," +gender);
                    // 修改数据
                    table.setValueAt(id, row, 1);
                    table.setValueAt(name, row, 2);
                    table.setValueAt(age, row, 3);
                    table.setValueAt(gender, row, 4);
                    
                }
                
                
            }
        });
        
        
        // 删除数据
        JButton deleteBtn =new JButton("delete");
        
        deleteBtn.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                
                boolean selecton =false;
                for(int i=0;i<model.getRowCount();i++) {
                    if(model.getValueAt(i, 0).equals(Boolean.TRUE)) {
                        selecton=true;
                    }
                }
                if(selecton) {
                    for(int i=model.getColumnCount()-1;i>=0;i--) {
                        if(model.getValueAt(i, 0).equals(Boolean.TRUE)) {
                            //删除数据
                            model.removeRow(i);
                        }
                    }
                }else {
                    System.out.println("请选择");
                }
                
                
                
            }
        });
        
        
        
        
        
        JScrollPane scrollPane =new JScrollPane(table);
        scrollPane.setSize(800, 200);
        scrollPane.setLocation(10, 10);

        
        
        
        
        
        jPanel.add(scrollPane);
        jFrame.setContentPane(jPanel);
        // 设置窗体可见
        jFrame.setVisible(true);
            

 

posted @ 2024-12-08 20:33  leungqingyun  阅读(18)  评论(0)    收藏  举报