1、如果你用BorderLayout布局来装表格,无论你是否设置表格大小,表格都会将整个Panel占满,所以需要用FlowLayout布局来处理!
2、对于一个窗口JDialog窗口中,出现多条滚动条的问题。
出现这种情况的原因 JDialog --- > AllPanel(加滚动条) ---->Panel(加滚动条)
这样就相当于加了两条滚动条。为什么当时会加上两条滚动条呢?
因为如果AllPanel不加上滚动条,整个窗口会只显示一部分,没有把Panel的内容全部显示出来。
那如何只显示一条滚动呢,其实道理很简单,就是整个Dialog,只有一个地方是加滚动条的
1、就是让 JDialog --- > AllPanel(加滚动条) ---->Panel
2、直接把布局改成JDialog ---》 Panel(加滚动条)
3、有一种方式重画面板
panel.remove(1);
panel.remove(1);
//中间代码省略
projectWeeklyPanel.validate();
projectWeeklyPanel.repaint();
但这种方式,界面并不会实时更新,断点运行就可以,但添加延时也没有效果。
后面把projectWeeklyPanel.validate(),projectWeeklyPanel.repaint()换成projectWeeklyPanel.revalidate()就可以了。
*** 在使用repaint()重绘的过程中,有的时候会出现面板的更新不及时,更新出来的面板有空缺。如果你这是的面板是一个Tab页,你可以不用使用repaint()重绘,切换到另一个tab页,
再切换回来就可以了。所以如果使用table页切换的方式来更新页面,就能保证页面刷新不会卡顿和内容缺失了
4、Window是Frame和JDialog的父类
5、JTextArea如果直接放到面板,会显示没空白,要套一层滚动条new JScrollPane(itexeArea)
6、JTable,只能选中整行(不是只能选中一行),不显示选中单元格
table.setCellSelectionEnabled(false);
table.setRowSelectionAllowed(true);
7、final TableRowSorter sorter = (TableRowSorter) table.getRowSorter(); 表格过滤,如果列的内容包含“ )”空格+括号,会出现过滤不了的情况
8,JTable停止编辑后,页面才会更新。有有时在表格中checkBox.setSelected(true);没有效果,这时你停止表格的编辑事件,就会有效果了
9、JTable的单元格渲染分为TableCellRenderer查看渲染,TableCellEditor编辑渲染
10、TableModelListener的事件类型
TableModelEvent.INSERT:新行或新列的添加;TableModelEvent.INSERT:新行或新列的添加;TableModelEvent.UPDATE:现有数据的更改
11、JTextField的tirm()方法会把空格给去除,如果输入空格,你得到的时候“”;
12、使用JList.updateUI(),不要在事件里面多开一个线程,不然面板的刷新会有问题
13、更新面板显示不要用JPanel.repaint();这些方法,直接用JPanel.UpdateUI()就可以了。
14、ItemListener的itemStateChanged执行,并不是下拉框空间,窗口完成赋完值后就会执行,要弹出框全部绘制完,显示后,才会执行
15、JTextArea设置大小textArea.setRows(5),textArea.setColumns(15)
16、JTextField设置宽度:iTextField.setColumns(20);
17、JDialog(Frame owner, String title, boolean modal),JDialog的modal参数,其作用是,如果是true,则JDialog.setVisible(true)的时候,线程会阻塞。为false,则不会阻塞
18、JTable不能选中单元格,JTable.setCellSelectionEnabled(false);
19、JTable只能选中单行
JTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JTable.getTableHeader().setReorderingAllowed(false);