[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;





相关文章推荐

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

Fedora默认GNOME桌面是没有KDE的程序菜单和已打开程序列表的,需要手动安装GNOME的扩展。 首先,安装设置GNOME扩展的管理程序gnome-tweak-tool: yum...

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

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

JavaScript html js页面刷新之后下拉菜单选中值不变,在按钮提交后保存下拉列表中值不变

JavaScript html js页面刷新之后下拉菜单选中值不变,在按钮提交后保存下拉列表中值不变 博客分类: javaScript HTMLJavaScript金山  除了下...

仿QQ下拉菜单列表 自定义Spinner

Android自带的下拉列表控件功能已经十分强大,但是看起来并不是十分美观,所以用Android的其它控件实现了一个定义的下拉菜单控件,看起来还可以,下面直接贴代码,相信都看得明白! 主界面activ...

ActionBar中的下拉菜单列表导航

主要有四个步骤 1、chuanj

仿select下拉菜单

  • 2016年12月23日 13:27
  • 2KB
  • 下载

CSS3 animation--仿写炫酷的下拉菜单

1.原文地址:15款手机端打开菜单动画过渡特效DEMO15 2.下面我们就仿着他的源码自己尝试写一下。不得不说由于是在移动端,这样的效果 确实是狂酷耍帅吊炸天的漂亮!...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[note]表格,列表和下拉菜单
举报原因:
原因补充:

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