随笔 - 6  文章 - 1  trackbacks - 0
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

typeTable.setPreferredScrollableViewportSize(typeTable.getPreferredSize());
JScrollPane typeTableScrollPane
=new JScrollPane(typeTable);

mt.pack();
mt.setVisible(
true);
import java.awt.*;

import javax.swing.*;

public class MixerTest2 extends JFrame {

public MixerTest2() {
super("Customer Editor Test");
setSize(
600,160);
setDefaultCloseOperation(EXIT_ON_CLOSE);

JTable typeTable
=new JTable();
typeTable
=new JTable(new String [][] {
{"312fs""33232""32""32"},
{"3212fsdfa12""3322""32""32"},
{"3212fa12""321212""321212""321212"},
{"3212gsds12""321212""321212""321212"}
}
,
new String [] {
"Title 1""Title 2""Title 3""Title 4"
}

);
typeTable.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);

typeTable.getColumnModel().getColumn(
0).setPreferredWidth(10);
typeTable.getColumnModel().getColumn(
1).setPreferredWidth(30);
JScrollPane typeTableScrollPane
=new JScrollPane(typeTable);

getContentPane().add(typeTableScrollPane);
}


public static void main(String args[]) {
MixerTest2 mt 
= new MixerTest2();
mt.setVisible(
true);
}

}

在上面的代码中,我打算在JTable初始化的过程中,调用typeTable.getColumnModel().getColumn(0).setPreferredWidth(10);初始化各列的宽度。
但实际的情况是,只有我将初始值设为大于75时,该命令才会成功,否则就是各列均等。
原因:
没有具体指定宽度的列,JTable会默认的设置为75。
JTable 的宽度=10+30+75+75=190 
而在我的这个样例程序中,JFrame 宽度为600,远远大于JTable 的宽度。因此程序按照我的初始值绘制完JTable之后,会自动的根据JFrame 的大小及布局再重新调整。这样就造成与代码不符的情况。
在网上查询到,有人推荐使用Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);这样会解决问题,但同时我们也失去使用AutoResizeMode的好处。
将代码修改如下,问题解决:
typeTable.setPreferredScrollableViewportSize(typeTable.getPreferredSize());
JScrollPane typeTableScrollPane
=new JScrollPane(typeTable);

mt.pack();
mt.setVisible(
true);





posted @ 2008-12-12 14:06 川流不息 阅读(2300) | 评论 (0)编辑 收藏

使用命令重新设置JPanel的布局。
1)在JPanel上添加或者删除组件;
2)完成布局;
3)调用 validate();使新布局有效。

posted @ 2008-12-12 13:43 川流不息 阅读(296) | 评论 (0)编辑 收藏

Look And Feel for NetBeans

此帖讨论NetBeans的非默认样式的用法,基于命令行。
这里笔者将“laf(Look And Feel)”译为“样式”

因为NetBeans是基于Swing的,这使得NetBeans具有了百变面孔,相当可爱哟!

了解Java Swing 的人可能知道Swing 的Look and Feel 是很灵活的,现在就有很多的实现。下面是笔者知道的windows平台的一些列表:
其中前四种是jdk自带的,后三种比较有趣。(因为笔者还没有申请到opensolaris,只知道windows,渴望中)。
注意今天的实现方式是跨平台的。

打开这个路径C:\Program Files\netbeans-5.5\bin,检查是否有nb.exe
打开命令行输入cd "C:\Program Files\netbeans-5.5\bin"回车
输入nb --laf javax.swing.plaf.metal.MetalLookAndFeel
这样NetBeans就打开了,其样式与原来的有什么不同?下面是笔者的图片
命令行:

NetBeans:


用这种方法可以顺利的看到前四种的结果,其中第3种是windows下NetBeans默认的样式。
而对于其它三种则没有效果,因为根本就没有找到那些类。
输出窗口报错如下:
UI class not found, using default UI...

现在介绍其它三种效果的实现方法。
首先,需要获得它们的jar包,你可能已发现我在上面给这三种样式加了链接,点进去下载吧
下面以substance为例,这儿下它的包
https://substance.dev.java.net/files/documents/3294/55844/substance.jar
放到D:\下
打开命令行输入cd "C:\Program Files\netbeans-5.5\bin"回车
输入nb --cp:a "D:\substance.jar" --laf org.jvnet.substance.SubstanceLookAndFeel
这样NetBeans就打开了,其样式与原来的有什么不同?下面是笔者的图片



---------------------------------------------------------------------------------------------------------------------------------------------------------------

每次都在命令行中启动,过于繁琐。可以在NETBEAN 的配置文件中加入配置参数:
1)下载 look and feel jar 包到硬盘上
2)打开netbean安装路径下的etc\netbeans.conf
       增加下面一下行:
       netbeans_default_options="--cp:p C:\javaplugin\PgsLookAndFeel.jar --laf com.pagosoft.plaf.PgsLookAndFeel"
       --cp:p C:\javaplugin\PgsLookAndFeel.jar 作用是把look and feel jar 加到Netbean启动路径上;
       --laf com.pagosoft.plaf.PgsLookAndFeel  作用为启用指定的look and feel。
posted @ 2008-11-14 11:52 川流不息 阅读(1668) | 评论 (0)编辑 收藏
数据库为 JavaFee.mdb 存放在DATA 目录下,密码为:1234.
连接语句如下
try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String path=System.getProperty("user.dir");
            String strurl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+path+"\\Data\\JavaFee.mdb;pwd="+"1234"+";";
            try {
                con = DriverManager.getConnection(strurl);
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(MoneyControlView.this, "数据库文件丢失,请检查!", "数据检查", JOptionPane.ERROR_MESSAGE);
            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MoneyControlView.class.getName()).log(Level.SEVERE, null, ex);
        }
posted @ 2008-10-02 03:07 川流不息 阅读(719) | 评论 (0)编辑 收藏