po一下最近写swing遇到的一些情况

来源:互联网 发布:俄罗斯大卫知乎 编辑:程序博客网 时间:2024/05/17 07:21

setPreferredSize的用法配合BordenLayout用,如panel1.setPreferredSize(new Dimension(0,50));设置了一个高度为50的panel,宽度随窗口变化。


使用FlowLayout的时候可以设置参数使布局符合自己的要求,如JPanel panel1=new JPanel(new FlowLayout(FlowLayout.CENTER,20,8));


文本框的监听 xxx.getDocument().addDocumentListener


JoptionPane的显示不在前端时,第一个参数null设为this


暂时这些,以后更新


com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

这个注意下端口号对不对

关于jdbc驱动的安装怎么安都不对,最后直接在工程导入jar算了……


“java.sql.SQLException: Before start of result set解决方法

今天做东西的时候发现这个错误,查了查,特地记下来,以后开始积累了 哈哈 解决发法是:

使用rs.getString();前一定要加上rs.next();

原因:ResultSet对象代表SQL语句执行的结果集,维护指向其当前数据行的光标。每调用一次next()方法,光标向下移动一行。最初它位于第一行之前,因此第一次调用next()应把光标置于第一行上,使它成为当前行。随着每次调用next()将导致光标向下移动一行。在ResultSe对象及其t父辈Statement对象关闭之前,光标一直保持有效。”


以上这段是转别人的,但是确实解决了问题

今天做JTabbedPane的时候弄了一下午,删除tab的时候总是发生index出错,看了一遍jdk的文档之后总算解决了

JTabbedPane的tab每一个都有index,其index根据建立的顺序分配,第一个为0,其后的递增,其中index不能>=Tab count

然后为tab的标题栏上添加控件时用到setTabComponentAt(tabs.getTabCount()-1,panel),意思是根据索引值添加控件

而删除tab时也要根据index来删除,实际上建立tab时要用到addTab(title,com),其中title为标题,com为控件

所以要删除当前tab时直接remove(com),把建立用到的控件删掉,对应的tab也删掉了


继承AbstractTableModel之后有三个方法必须重写,否则表格不出现数据。


jtable还真难搞……

getColumnClass这个是获取表中列的属性,根据这个属性table才可以设置相应的编辑器和渲染器

当数据表中存在空值时,getColumnClass就会报错NullPoint,所以需要自己设定相应的列的属性


4月12日:

其实jtable也许不算难,难的是像我这种新手啥都不会……

继承abstracttablemodel重写tablemodel的时候,有很多方法需要自己实现

比如setvalueat,这个可以写成:

public void setValueAt(Object aValue,int row,int column)
{
//return data.elementAt(rowIndex).elementAt(columnIndex);
data.elementAt(row).setElementAt(aValue,column);
fireTableCellUpdated(row, column);
}


这里的data用的是vector。

这样实现方法后,在table上双击单元格就能修改数据并保存在单元格里,而跟数据库连接的话就需要给tablemodel添加监听,在tablechanged里添加方法。

注意的是如果setvalueat里不加上fireTableCellUpdated等通知监听器的语句,tablechanged就死活没反应了……


另外这几天发现swing的lookandfeel真是让我打开了新世界的大门……

0 0
原创粉丝点击