awt/swing知识积累

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);

原文地址:https://www.cnblogs.com/wwssgg/p/15624805.html