日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java表格标题栏_Java MFixedColumnTable (提供行标题栏的表格)

發布時間:2025/4/5 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java表格标题栏_Java MFixedColumnTable (提供行标题栏的表格) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可以以一列或多列為行標題欄。

預覽:

代碼:

package com.han;

import java.awt.BorderLayout;

import java.util.Vector;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JViewport;

import javax.swing.ListSelectionModel;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

import javax.swing.table.AbstractTableModel;

public class MFixedColumnTable extends JPanel {

/**

*

*/

private static final long serialVersionUID = -8001758880985479654L;

private Vector columnNameV; // declare the table column name vector

private Vector> tableValueV; // declare the table value

// vector

private int fixedColumn = 1; // the fixed column number

private JTable fixedColumnTable;

private FixedColumnTableModel fixedColumnTableModel;

private JTable floatingColumnTable;

private FloatingColumnTableModel floatingColumnTableModel;

private class FixedColumnTableModel extends AbstractTableModel { // inner class

/**

*

*/

private static final long serialVersionUID = 3935656415101599023L;

@Override

public int getRowCount() {

// TODO Auto-generated method stub

return tableValueV.size();

}

@Override

public int getColumnCount() {

// TODO Auto-generated method stub

return fixedColumn;

}

@Override

public Object getValueAt(int rowIndex, int columnIndex) {

// TODO Auto-generated method stub

return tableValueV.get(rowIndex).get(columnIndex);

}

@Override

public String getColumnName(int columnIndex) {

return columnNameV.get(columnIndex);

}

}

private class FloatingColumnTableModel extends AbstractTableModel {

/**

*

*/

private static final long serialVersionUID = -2481466672947191281L;

@Override

public int getRowCount() {

return tableValueV.size();

}

@Override

public int getColumnCount() {

return columnNameV.size() - fixedColumn;

}

@Override

public Object getValueAt(int rowIndex, int columnIndex) {

return tableValueV.get(rowIndex).get(columnIndex + fixedColumn);

}

@Override

public String getColumnName(int columnIndex) {

return columnNameV.get(columnIndex + fixedColumn);

}

}

private class MListSelectionListener implements ListSelectionListener {

boolean isFixedColumnTable = true;

public MListSelectionListener(boolean isFixedColumnTable) {

this.isFixedColumnTable = isFixedColumnTable;

}

@Override

public void valueChanged(ListSelectionEvent e) {

// TODO Auto-generated method stub

if (isFixedColumnTable) {

int row = fixedColumnTable.getSelectedRow();

floatingColumnTable.setRowSelectionInterval(row, row);

} else {

int row = floatingColumnTable.getSelectedRow();

fixedColumnTable.setRowSelectionInterval(row, row);

}

}

}

public MFixedColumnTable(Vector columnNameV,

Vector> tableValueV, int fixedColumn) {

super();

setLayout(new BorderLayout());

this.columnNameV = columnNameV;

this.tableValueV = tableValueV;

this.fixedColumn = fixedColumn;

// create fixedColumnTable

fixedColumnTableModel = new FixedColumnTableModel();

fixedColumnTable = new JTable(fixedColumnTableModel);

ListSelectionModel fixed = fixedColumnTable.getSelectionModel();

fixed.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

fixed.addListSelectionListener(new MListSelectionListener(true));

// create floatingColumnTable

floatingColumnTableModel = new FloatingColumnTableModel();

floatingColumnTable = new JTable(floatingColumnTableModel);

floatingColumnTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

ListSelectionModel floating = floatingColumnTable.getSelectionModel();

floating.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

floating.addListSelectionListener(new MListSelectionListener(false));

// create scrollPane

JScrollPane scrollPane = new JScrollPane();

scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,

fixedColumnTable.getTableHeader());

JViewport viewport = new JViewport();

viewport.setView(fixedColumnTable);

viewport.setPreferredSize(fixedColumnTable.getPreferredSize());

scrollPane.setRowHeaderView(viewport); // viewport 視口

scrollPane.setViewportView(floatingColumnTable);

add(scrollPane, BorderLayout.CENTER);

}

}

然后,用一個測試提供行標題欄的表格的代碼:

package com.han;

import java.awt.BorderLayout;

import java.util.Vector;

import javax.swing.JFrame;

/**

* Provide a fixed column in a table

*

* @author Gaowen

*

*/

public class JTable4 extends JFrame {

/**

*

*/

private static final long serialVersionUID = 805308369080023303L;

public JTable4() {

super();

setTitle("提供行標題欄的表格");

setBounds(100, 100, 500, 400);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Vector columnNameV = new Vector();

columnNameV.add("日期");

for (int i = 1; i < 21; i++) {

columnNameV.add("商品" + i);

}

Vector> tableValueV = new Vector>();

for (int row = 1; row < 31; row++) {

Vector rowV = new Vector();

rowV.add(row);

for (int col = 0; col < 20; col++) {

rowV.add((int) (Math.random() * 1000));

}

tableValueV.add(rowV);

}

final MFixedColumnTable panel = new MFixedColumnTable(columnNameV,

tableValueV, 1);

getContentPane().add(panel, BorderLayout.CENTER);

}

public static void main(String[] args) {

// TODO Auto-generated method stub

JTable4 frame = new JTable4();

frame.setVisible(true);

}

}

這是繼前幾個表格使用和操作的后續,講解了提供行標題欄的表格的實現方法,以幫助讀者拓寬表格的設計思路,同時這也是一種很適用的表格形式。

總結

以上是生活随笔為你收集整理的java表格标题栏_Java MFixedColumnTable (提供行标题栏的表格)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。