[note]表格,列表和下拉菜单

转载 2015年07月07日 15:46:51

JTable

       >>>init 的几种方法:

       >> JTable table= new JTable(Object[][] data, Object[] colName);

       >> JTable table= new JTable(Vector data,Vector colName);

       //初始化时直接赋值,注意使用这两种初始化方法,直接将table加入container中时,不能显示table header。需要用JTable的getTAbleHeader()

      //方法获取JTableHeader组件,放置于container中才能产生table header。如果是将该table先放入面板,比如JScrollPane中再放入container中

      //则无这样的问题, 

       >>  JTable table = new JTable();  // 需要使用TableModel接口的实现类来给table赋值

       >>常用方法:

        >> 取表头: JTableHeader tableHeader=table.getTableHeader();  table.setTableHeader(JTableHeader header);

        >>表格模型有关: DefaultTableModel model = (DefaultTableModel) table.getModel();  table.setModel(TableModel model);

        >> 与存储数据有关: Object value=table.getValueAt(int row, int column); table.setValueAt(Object aValue, int row, int column);

        >>与选中有关:  table.selectAll();, table.clearSelection(), table.isRowSelected();  table.setRowSelectionInterval(int from, int to); 

                                   table.addRowSelectionInterval(int from, int to); 

                                   int rowcount = table.getSelectedRowCount();     //0 if no row is selected; 

                                   int row = table.getSelectedRow();    //return first selected row number, -1 if no row is selected

                                   table.setRowSelectionAllowed(true);  table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

         >> 与行列有关: table.moveColumn(int column, int targetColumn); table.getColumnName();table.getColumnCount();table.getRowCount();

                                     table.setRowHeight(50);   table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setRowSorter(TableRowSorter sorter);

>>>TableModel接口负责数据存储,JTable类不负责存储数据.。AbtractTableModel实现了接口的大部分方法,可以通过继承该类来实现自己的表格。默认实现类是DefaultTableModel。可以用JTable 的getModel()方法获取某个table的表格模型

       >> DefaultTableModel的init 方法:

>> DefaultTableModel model=new DefaultTableModel(); //0 row,o column

>> DefaultTableModel model=new DefaultTableModel(int rowCount,int colCount); //指定行和列数的表格

>> DefaultTableModel model=new DefaultTableModel(Object[][] data,Object[] colName); //指定数据和列名的表格

>> DefaultTableModel model=new DefaultTableModel(Vector data, Vector colName); //指定数据和列名的表格

        >> 常用方法: 

         >>设表头: model.setColumnIdentifiers(new Object[] { "学号", "姓名" });

         >>与行列相关: model.addRow(Obect[] rowData);  model.addRow(Vector rowData); model.insertRow(int row,Obect[] rowData);  

                                    model.insertRow(int row, Vector  rowData);   model.removeRow(int row); model.setRowCount(0);  //清空table中的值;  

                                    model.removeRow(row); 

                                  //注意添加删除后,其后的行索引值相应的加减1.从表格中间添加删除行时要注意其后的行索引值变化

         >> 与取值设值相关: Object ob = model.getValueAt(row, column); model1.setValueAt(Object aValue, int row, int column)


>>>表头JTableHeader, 可以通过table.getTableHeader()获得默认表头

        >> 常用方法: 
        table.getTableHeader().setReorderingAllowed(false); // set table header column can not be draged to move position

>>> 表格单元格的样式类TableCellRenderer,可通过重写JTable的getDefaultRenderer来自定义一些表格单元格样式如
@Override
public TableCellRenderer getDefaultRenderer(Class<?> columnClass) {
DefaultTableCellRenderer cr = (DefaultTableCellRenderer) super
.getDefaultRenderer(columnClass);
cr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
return cr;
}

@Override
public JTableHeader getTableHeader() {
tableHeader.setReorderingAllowed(false);

                DefaultTableCellRenderer hr = (DefaultTableCellRenderer) tableHeader.getDefaultRenderer();
hr .setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
return tableHeader;
}

>>>通过重写JTable的isCellEditable来设置单元格不可编辑,如

       @Override
public boolean isCellEditable(int row, int column) {
return false;
}


>>>通过重写 JComponent.getToolTipText 方法可以设置单元格上的tooltip

public String getToolTipText(MouseEvent event) {
int indexCol = super.columnAtPoint(event.getPoint());
int indexRow = super.rowAtPoint(event.getPoint());

String tooltip = "<html><font face=微软雅黑 side=16 color=red >"
+ super.getValueAt(indexRow, indexCol) + " " + indexRow + "--"
+ indexCol + "</font></html>";
 
if ((indexCol >= 0) && (indexCol < super.getColumnCount())
&& (indexRow >= 0) && (indexRow < super.getRowCount()))
return tooltip;
else
return super.getToolTipText(event);
}

>>>TableRowSorter类可以用来设置点击表头提供排序功能

        >> 常用方法: 

                TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<DefaultTableModel>();
sorter.setModel(model);
table.setRowSorter(sorter);

          或者可以直接初始化: table.setRowSorter(new TableRowSorter<DefaultTableModel>(model));


7. 建立列表以及常用函数

>>>与建立JTable比较类似。列表类是JList, 列表模型接口是ListModel,其抽象实现类是AbtractListModel,默认实现类DefaultListModel;列表中元素接口是ListCellRenderer,默          认实现类是DefaultListCellRenderer

>>JList init方法:

    JList list=new JList();  JList(Object[] listData);  JList(Vector listData); JList(ListModel listModel);

>> 也可以用list.setListData(Object[] listData);或者list.setListData(Vector listData);来设置列表值

>>和JTable一样也可以通过重写 JComponent.getToolTipText 方法可以设置单元格上的tooltip

>>常用方法与JTable的都很类似。如

JList<String> list=new JList<String>();

    DefaultListModel<String> listmodel=new DefaultListModel<String>();

    list.setModel(listmodel); //or 初始化时赋值 JList<String> list=new JList<String>(listmodel); 

    listmodel.addElement(str); //插入值

    listmodel.remove(index); //移除值 or listmodel.removeElement(str);

    ArrayList<String> selectedusers=(ArrayList<String>) list.getSelectedValuesList(); //获取列表中的选中对象

    list.clearSelection(); //清空选中状态;

   JScrollPane scroll=new JScrollPane(list); 

->JList<String> list=new JList<String>();  

    DefaultComboBoxModel<String> combomodel=new DefaultComboBoxModel<String>();

    list.setModel(combomodel);

    JScrollPane scroll=new JScrollPane(list);

    combomodel.addElement("abc");

    DefaultComboBoxModel<String> model=(DefaultComboBoxModel<String>) list.getModel(); 

->自定义的可以排序 的列表

class SortListModel<E>   extends AbstractListModel<E>   {
private static final long serialVersionUID = 1L;
// 用TreeSet实现排序
private TreeSet<E>    model = new TreeSet<E> ();
 
@Override
public int getSize() { return model.size(); }

@Override
public E getElementAt(int index) {  return   (E) model.toArray()[index]; } 

public void add(E element) {
if (model.add(element)) {
super.fireContentsChanged(this, 0, getSize()); 
}

}

->预览自定义字体的列表模型

 DefaultListModel<Font> model = new DefaultListModel<Font>();
 list.setModel(model);
model.addElement(new Font(fontNames[i], Font.PLAIN, 24));
ListCellRenderer<Object>   renderer = new FontListCellRenderer<Object> ();
list.setCellRenderer( renderer);

class FontListCellRenderer<E> implements ListCellRenderer<E> {

@Override
public Component getListCellRendererComponent(JList<? extends E>   list, E value,
int index, boolean isSelected, boolean cellHasFocus) {
DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
JLabel renderer = (JLabel) defaultRenderer
.getListCellRendererComponent(list, value, index, isSelected,
cellHasFocus);
Font font = (Font) value;
renderer.setFont(font);
renderer.setText(font.getFontName());
return renderer;
}


}

20. 设置下拉菜单 JComboBox的两种方法

>>>  JComboBox<String> combo = new JComboBox<String>();
         DefaultComboBoxModel  <String> model = new DefaultComboBoxModel<String>();
           model.addElement("男");
         model.addElement("女");
          combo.setModel(model);

>>> String[] elements=new String[]{"e1","e2"};

        JComboBox<String> combo = new JComboBox<String>(str);

>>> 通过model选择选中值:  Object ob= model.getSelectedItem();  // ob.toString()方法可以转化为String

>>>  通过model设置选中值:  model.setSelectItem(ob);

>>> 通过combobox选择选中值:  Object ob= combo.getSelectedItem();  // ob.toString()方法可以转化为String

>>>  通过combobox设置选中值:  combo.setSelectItem(ob); 或 combo.setSelectedIndex(int index); //index start with 0;





玩转Bootstrap(基础) -- (5.下拉菜单)

在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件。当然,如果你使用的是未编译版本,在js文件夹下你能找到一个名为“dropdown.js”的文...
  • Rodgexue
  • Rodgexue
  • 2015年08月21日 11:58
  • 8534

Qt浅谈之四十七下拉列表菜单

一、简介        在QGraphicsItem下使用QListWidget实现下拉列表的功能,并显示所有的选项,便于浏览和查询数据。 二、详解 1、部分代码 (1)cluster...
  • taiyang1987912
  • taiyang1987912
  • 2016年03月31日 00:32
  • 3400

Axure RP 8.0 用中继器(repeater)完成按钮点击添加下拉菜单和文字

Axure RP 8.0 利用中继器(repeater)完成按钮点击添加一行(下拉菜单,文字,图片) 中继器是axure 7带来的功能,它的主要用途在于:一次性添加一组元件,并可以赋值。...
  • SoftPoeter
  • SoftPoeter
  • 2017年06月28日 21:15
  • 2020

MOSS2010列表添加自定义下拉菜单

  • 2011年10月06日 23:10
  • 573KB
  • 下载

jQuery抽屉式收缩展开下拉菜单列表代码

  • 2017年11月08日 10:59
  • 36KB
  • 下载

excel表格中如何设置下拉菜单

一、 直接自定义序列 用“数据/有效性”功能可以达到目的。 以选择性别为例,制作有男、女选项的下拉菜单: 选中“性别”数据区域; 执行“数据/有效性”命令,打开“数据有效性”对话框; 单击“...
  • yuhuijun_1
  • yuhuijun_1
  • 2013年02月26日 17:15
  • 7303

表格里的单元格可编辑,能变文本框或下拉菜单

http://lab.why100000.com/    ---代码实验室里面有表格里的单元格可编辑代码   表格里的单元格可编辑,能变文本框或下拉菜单 在客户端的JS+HTML代码,可参考http:...
  • wenzhihui_2010
  • wenzhihui_2010
  • 2013年07月15日 17:05
  • 948

AngularJS:模糊查询过滤内容,下拉菜单排序,过滤敏感字符,验证判断后添加表格信息

用户信息:奇偶数隔行变色,选中行变色,鼠标变小手样式;姓名查询条件,过滤敏感字符;下拉列表排序;非空验证添加信息;点击按钮删除                               .fi...
  • xieshuaikang
  • xieshuaikang
  • 2017年11月23日 10:31
  • 116

Windows下拉菜单绑定手动表格代码

  • 2013年12月27日 16:15
  • 2KB
  • 下载

fedora gnome 如何添加 程序下拉菜单(application menu) 和 已打开程序列表 (window list)

Fedora默认GNOME桌面是没有KDE的程序菜单和已打开程序列表的,需要手动安装GNOME的扩展。 首先,安装设置GNOME扩展的管理程序gnome-tweak-tool: yum...
  • hshl1214
  • hshl1214
  • 2015年11月07日 11:35
  • 1419
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[note]表格,列表和下拉菜单
举报原因:
原因补充:

(最多只允许输入30个字)