swing的一点记录
记录一点用过的swing相关东西。
- 皮肤
界面是最直接的用户体验。有的时候我觉得界面好看。软件本身就也许可能不会差到哪里。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类中修改。比较顾名思义就不扯太多了!
- 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; } }
。。。。。。
哎。一开始的整理兴致被这些鼠不尽代码格式整理搞得没斗志了。有机会再来补上吧!