swing的一点记录

记录一点用过的swing相关东西。

  1. 皮肤

    界面是最直接的用户体验。有的时候我觉得界面好看。软件本身就也许可能不会差到哪里。swing本身的界面我用的不多,也只是偶然的机会使用了SeaGlass这个开源的swing皮肤。本身造诣也不高,理解swing也不深。下面只是把我用到的简单的记录一下。

    SeaGlass相关内容在http://code.google.com/p/seaglass/上。遗憾的我一进入这网页看到一个seaglass-demo.jar这个链接于是连想都没想下了下来试了一下,感觉还不错。就用了。中间发现有些BUG。但是其皮肤效果我还是挺满意的于是就大致看起了源码,对于我的水平看不懂这也是必然的。但根据问题的关键,找到转折点改改也还行。瞎改了半天,修正了若干个我用到BUG,还有若干个BUG不得解。哎。还是老师到官网上看看吧。哎。我倒,我用svn下载来代码一看,我用的demo居然是早期版本的。最新版本的用起来我遇到的BUG已然修复了。憾事啊!官方简单文档中也有一些参数的使用,用了后基本上满足我的需求了!这个项目的中文化问题在后期版本中修正好了。但是我习惯性的加入如下参数,记录一下罢了!

    //中文化和加载皮肤
    try {
      UIManager.setLookAndFeel("com.seaglasslookandfeel.SeaGlassLookAndFeel");
      UIManager.getLookAndFeelDefaults().put("defaultFont", new Font("微软雅黑", Font.PLAIN, 12));
    } catch (Exception e) {
      e.printStackTrace();
    }

     

    其他东西也没什么好说的。官网说的很细了!哦。对了关于标题栏上无论用JDialog或JFrame无论最大化最小化按钮有没有功能,都会在其中显示,这点可以在SeaGlassTitlePane类中修改。比较顾名思义就不扯太多了!

     

  2. JTable的一些使用
      //加入数据
      public void getData(List dataList) {
            DefaultTableModel model = (DefaultTableModel) jTable.getModel();
            int rowCount = jTable.getRowCount();
            for (int i = rowCount; i > 0; i--) {
                model.removeRow(i - 1);
            }
            jTable.repaint();
            for (Object object : dataList) {
                Pojo pojo = new Pojo();
                //set code
                Object data[] = {...};
                model.addRow(data);
            }
    
       }
    //隐藏指定列
    private void hiddenColumn(JTable table, int columnIndex) {
            TableColumnModel tcm = table.getColumnModel();
            TableColumn tc = tcm.getColumn(columnIndex);
            tc.setWidth(0);
            tc.setPreferredWidth(0);
            tc.setMaxWidth(0);
            tc.setMinWidth(0);
            table.getTableHeader().getColumnModel().getColumn(columnIndex).setMaxWidth(0);
            table.getTableHeader().getColumnModel().getColumn(columnIndex).setMinWidth(0);
    }
     
    //表头添加鼠标事件  
    private void addActionOnTableHeader(JTable jt) {
            jt.getTableHeader().addMouseListener(new MouseAdapter() {
    
                public void mousePressed(MouseEvent e) {
                       //TODO        
                }
            });
    }
     
    //在表格中添加右键事件
    private void jTableMouseClicked(java.awt.event.MouseEvent evt) {                                     
            //鼠标右键和双击
            if (SwingUtilities.isRightMouseButton(evt)) {
                jPopupMenu.show(jTable, evt.getX(), evt.getY());
            }
    }             
     
     
    //删除Jtable中指定行
    private void delSelectedRow(int[] rows) {
            int[] id = new int[rows.length];
            int result = JOptionPane.showConfirmDialog(null, "warning text", "tips", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
            if (result == JOptionPane.YES_OPTION) {
               
                for (int i = 0; i < rows.length; i++) {
                    int row = rows[i];
                    id[i] = (Integer) this.jTable.getValueAt(row, 0);
                }
                xxxService.delSelectedRow(id);
                //刷新表数据
            } else {
                return;
            }
    
     }



 

。。。。。。

哎。一开始的整理兴致被这些鼠不尽代码格式整理搞得没斗志了。有机会再来补上吧!

posted on 2011-04-25 20:54  山上明月  阅读(975)  评论(3编辑  收藏  举报