前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JTable常见用法细则+设置某列可编辑+滚动表格

JTable常见用法细则+设置某列可编辑+滚动表格

作者头像
YGingko
发布2017-12-28 13:34:37
3K0
发布2017-12-28 13:34:37
举报
文章被收录于专栏:海说海说

JTable常见用法细则

JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处. 一. 创建表格控件的各种方式: 1)  调用无参构造函数.

代码语言:txt
复制
JTable table = new JTable();

2)  以表头和表数据创建表格.

3)  以表头和表数据创建表格,并且让表单元格不可改.

二.对表格列的控制 1) 设置列不可随容器组件大小变化自动调整宽度.

代码语言:txt
复制
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

2) 限制某列的宽度.

代码语言:txt
复制
TableColumn firsetColumn = table.getColumnModel().getColumn(0);
firsetColumn.setPreferredWidth(30);
firsetColumn.setMaxWidth(30);
firsetColumn.setMinWidth(30);

3) 设置当前列数.

代码语言:txt
复制
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
int count=5;
tableModel.setColumnCount(count);

4) 取得表格列数

代码语言:txt
复制
int cols = table.getColumnCount();

5) 添加列

代码语言:txt
复制
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
tableModel.addColumn("新列名");

6) 删除列

代码语言:txt
复制
table.removeColumn(table.getColumnModel().getColumn(columnIndex));// columnIndex是要删除的列序号

三.对表格行的控制 1) 设置行高

代码语言:txt
复制
table.setRowHeight(20);

2) 设置当前航数

代码语言:txt
复制
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
int n=5;
tableModel.setRowCount(n);

3) 取得表格行数

代码语言:txt
复制
int rows = table.getRowCount();

4) 添加表格行

5) 删除表格行

代码语言:txt
复制
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
model.removeRow(rowIndex);// rowIndex是要删除的行序号

四.存取表格单元格的数据 1) 取单元格数据

代码语言:txt
复制
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
String cellValue=(String) tableModel.getValueAt(row, column);// 取单元格数据,row是行号,column是列号

2) 填充数据到表格. 注:数据是Member类型的链表,Member类如下:

填充数据的代码:

2) 取得表格中的数据

五.取得用户所选的行 1) 取得用户所选的单行

2) 取得用户所选的多行

六.添加表格的事件处理

例子:

import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout;

import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel;

public class PTest{  public PTest()  {   String head[] = {"学号", "姓名", "成绩(请双击以下空格输入)"};    Icon bug = new ImageIcon(getClass().getResource("789.jpg"));   JLabel a = new JLabel (bug);

  JTable a1 = new JTable (20,3);   a1.setRowHeight (30);//设置高度   a1.setDragEnabled(true);   //设置第一、二列不可可编辑   DefaultTableModel tableModel = new DefaultTableModel(20,3){    boolean[] editables = {false, false, true};    public boolean isCellEditable(int row, int col)    {       return editables[col];    }

//使table不可编辑的代码(放在model中有效)全部不可编辑 //    public boolean isCellEditable(int row, int column) //             { //                 return false; //             }       };        a1.setModel(tableModel);

  for (int i=0; i<3; i++)   a1.getModel().setValueAt(head[i], 0, i);

   JPanel panelwrap = new JPanel (new FlowLayout ());    JPanel panel = new JPanel (new GridLayout (2,1));    panel.setPreferredSize (new Dimension (500,400));    // panel.setBackground (Color.black);    panel.add (a,BorderLayout.CENTER);    JScrollPane a2 = new JScrollPane (a1);    panel.add (a2,BorderLayout.CENTER);    panelwrap.add(panel);

   JFrame frame = new JFrame ("JTableDemo");    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);    frame.setContentPane (panelwrap);    frame.setSize(500,400);    frame.pack();    frame.show();  }  public static void main(String[] args) {   PTest k = new PTest();  } }

//////////////////////////////////////////自己的//////////////////////////////////////

private JTable getJTable0() {   if (jTable0 == null) {    jTable0 = new JTable();    jTable0.setModel(new DefaultTableModel(new Object[][] { {false,  "null", "null", "com1", "null", "null", "null", "null", "null", "null", },      {false, "null", "null", "com2", "null", "null", "null", "null", "null", "null",  },      {  false, "null", "null", "com3", "null", "null", "null", "null", "null", "null",},      { false,"null", "null", "com4", "null", "null", "null", "null", "null", "null",  },      {  false,"null", "null", "com5", "null", "null", "null", "null", "null", "null", },      {  false, "null", "null", "com6", "null", "null", "null", "null", "null", "null",},      { false, "null", "null", "com7", "null", "null", "null", "null", "null", "null", },      {false, "null", "null", "com8", "null", "null", "null", "null", "null", "null",  },      { false,"null", "null", "com9", "null", "null", "null", "null", "null", "null", },      { false,"null", "null", "com10", "null", "null", "null", "null", "null", "null",  },      {false,  "null", "null", "com11", "null", "null", "null", "null", "null", "null", },      { false, "null", "null", "com12", "null", "null", "null", "null", "null", "null", }, }, new String[] {"操作",  "ID", "status", "序号", "产品序列号", "半成品序列号",      "所属工作任务号", "产品型号(pn码)", "生产进度状态", "端口状态", }) {     private static final long serialVersionUID = 1L;     Class<?>[] types = new Class<?>[] { Boolean.class, Object.class, Object.class, Object.class, Object.class, Object.class, Object.class, Object.class, Object.class,       Object.class, };     public Class<?> getColumnClass(int columnIndex) {      return types[columnIndex];     } //    //使table不可编辑的代码(放在model中有效)全部不可编辑 //    public boolean isCellEditable(int row, int column) //             { //                 return false; //             }     //指定列不可编辑     boolean[] editables = {true, false, false,false,false,false,false,false,false,false};        public boolean isCellEditable(int row, int col)        {           return editables[col];        }

//指定行不可编辑     boolean[] editables = {true, false, false,false,false,false,false,false};        public boolean isCellEditable(int row, int col)        {           return editables[row];        }

   });   }   return jTable0;  }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-03-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JTable常见用法细则
    • JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处. 一. 创建表格控件的各种方式: 1)  调用无参构造函数.
      • 2)  以表头和表数据创建表格.
        • 2) 限制某列的宽度.
          • 3) 设置当前列数.
            • 4) 取得表格列数
              • 5) 添加列
                • 6) 删除列
                  • 2) 设置当前航数
                    • 3) 取得表格行数
                      • 4) 添加表格行
                        • 四.存取表格单元格的数据 1) 取单元格数据
                          • 2) 填充数据到表格. 注:数据是Member类型的链表,Member类如下:
                            • 填充数据的代码:
                              • 2) 取得用户所选的多行
                                • 六.添加表格的事件处理
                                  • import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout;
                                    • import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel;
                                      • public class PTest{  public PTest()  {   String head[] = {"学号", "姓名", "成绩(请双击以下空格输入)"};    Icon bug = new ImageIcon(getClass().getResource("789.jpg"));   JLabel a = new JLabel (bug);
                                        •   JTable a1 = new JTable (20,3);   a1.setRowHeight (30);//设置高度   a1.setDragEnabled(true);   //设置第一、二列不可可编辑   DefaultTableModel tableModel = new DefaultTableModel(20,3){    boolean[] editables = {false, false, true};    public boolean isCellEditable(int row, int col)    {       return editables[col];    }
                                          • //使table不可编辑的代码(放在model中有效)全部不可编辑 //    public boolean isCellEditable(int row, int column) //             { //                 return false; //             }       };        a1.setModel(tableModel);
                                            •   for (int i=0; i<3; i++)   a1.getModel().setValueAt(head[i], 0, i);
                                              •    JPanel panelwrap = new JPanel (new FlowLayout ());    JPanel panel = new JPanel (new GridLayout (2,1));    panel.setPreferredSize (new Dimension (500,400));    // panel.setBackground (Color.black);    panel.add (a,BorderLayout.CENTER);    JScrollPane a2 = new JScrollPane (a1);    panel.add (a2,BorderLayout.CENTER);    panelwrap.add(panel);
                                                •    JFrame frame = new JFrame ("JTableDemo");    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);    frame.setContentPane (panelwrap);    frame.setSize(500,400);    frame.pack();    frame.show();  }  public static void main(String[] args) {   PTest k = new PTest();  } }
                                                  • //////////////////////////////////////////自己的//////////////////////////////////////
                                                  相关产品与服务
                                                  容器服务
                                                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                                  领券
                                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档