隨筆 - 6  文章 - 1  trackbacks - 0
          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(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 川流不息 閱讀(2305) | 評論 (0)編輯 收藏

          使用命令重新設置JPanel的布局。
          1)在JPanel上添加或者刪除組件;
          2)完成布局;
          3)調用 validate();使新布局有效。

          posted @ 2008-12-12 13:43 川流不息 閱讀(304) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 德清县| 内黄县| 尚志市| 巍山| 延寿县| 邯郸市| 宜川县| 南靖县| 西城区| 莱西市| 衡水市| 南陵县| 岑溪市| 安国市| 怀安县| 河曲县| 沙河市| 丰原市| 石景山区| 武川县| 红桥区| 陆良县| 营山县| 罗山县| 杨浦区| 光泽县| 江源县| 洱源县| 吉水县| 永胜县| 邵东县| 固安县| 莆田市| 怀柔区| 建宁县| 惠州市| 霍城县| 安平县| 泊头市| 马鞍山市| 马山县|