首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

在报表单元格中添加标签和按钮

2012-12-20 
在表格单元格中添加标签和按钮如下图所示,在表格单元格中添加标签和按钮:??代码如下:??import java.awt.Bo

在表格单元格中添加标签和按钮

如下图所示,在表格单元格中添加标签和按钮:

?

在报表单元格中添加标签和按钮

?

代码如下:

?

?

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Component;

import java.awt.Cursor;

import java.awt.Dimension;

import java.awt.FlowLayout;

?

import javax.swing.AbstractCellEditor;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

import javax.swing.table.TableCellEditor;

import javax.swing.table.TableCellRenderer;

?

import com.customcomponent.basicClass.BasicTableColumnModel;

?

import syspublicpanel.table.SysLoadTable;

import syspublicpanel.table.SysLoadTableModel;

import uiframework.tools.UIProperties;

?

public class TestTableRenderer extends JFrame {

??? private static final long serialVersionUID = 3941331829886452257L;

??? private SysLoadTable testTable = null;// 表格

???

??? private static final String[] colNames = new String[] { "第一列", "第二列", "第三列" };// 表头

???

??? public TestTableRenderer() {

?????? initialize();

??? }

???

??? /**

??? ?* 初始化组件

??? ?*/

??? private void initialize() {

?????? this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

?????? this.setSize(400, 300);

?????? this.setLocation(200, 100);

?????? this.setLayout(new BorderLayout());

?????? this.add(new JScrollPane(getTestTable()), BorderLayout.CENTER);

??????

?????? this.setVisible(true);

??? }

???

??? private SysLoadTable getTestTable() {

?????? if (testTable == null) {

?????????? SysLoadTableModel tableModel = new SysLoadTableModel(colNames);

?????????? tableModel.setAllEditableColumn(false);// 设置所有列不可编辑

?????????? tableModel.setColumnEditable("第三列", true);// 设置第三列可编辑

??????????

?????????? /**

?????????? ?* 添加表格内容

?????????? ?*/

?????????? tableModel.addRow(new Object[] { "1", "2", null });

?????????? tableModel.addRow(new Object[] { "11", "22", null });

?????????? tableModel.addRow(new Object[] { "111", "222", null });

??????????

?????????? testTable = new SysLoadTable(tableModel);

??????????

?????????? BasicTableColumnModel columnModel = (BasicTableColumnModel) testTable.getColumnModel();

?????????? columnModel.getColumn(2).setCellRenderer(new CustomTableRenderer());

?????????? columnModel.getColumn(2).setCellEditor(new CustomTableRenderer());

?????? }

?????? return testTable;

??? }

?

??? public static void main(String[] args) {

?????? try {

?????????? UIManager.setLookAndFeel(UIProperties.getInstance().getLookAndFeel());

?????? } catch (ClassNotFoundException e) {

?????????? e.printStackTrace();

?????? } catch (InstantiationException e) {

?????????? e.printStackTrace();

?????? } catch (IllegalAccessException e) {

?????????? e.printStackTrace();

?????? } catch (UnsupportedLookAndFeelException e) {

?????????? e.printStackTrace();

?????? }

??????

?????? new TestTableRenderer();

??? }

}

?

/**

?* 自定义表格渲染器

?*/

class CustomTableRenderer extends AbstractCellEditor implements TableCellRenderer, TableCellEditor {

??? private static final long serialVersionUID = 7380564532198049597L;

??? private JPanel panel = null;// 面板

??? private JLabel delLabel = null;// 删除标签

??? private JButton modifyButton = null;// 修改按钮

???

??? private static final String imagePath = "/sysimages/";// 图片路径

???

??? public CustomTableRenderer() {

?????? delLabel = new JLabel(new ImageIcon(getClass().getResource(imagePath + "delete.gif")));

?????? delLabel.setCursor(new Cursor(Cursor.HAND_CURSOR));

?????? delLabel.setToolTipText("删除");

??????

?????? modifyButton = new JButton("修改");

?????? modifyButton.setPreferredSize(new Dimension(60, 20));

??????

?????? panel = new JPanel();

?????? panel.setBackground(Color.WHITE);

?????? panel.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 0));

?????? panel.add(delLabel);

?????? panel.add(modifyButton);

??? }

???

??? public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

?????? if (row == table.getSelectedRow()) {

?????????? panel.setBackground(table.getSelectionBackground());

?????? } else {

?????????? panel.setBackground(Color.WHITE);

?????? }

?????? return panel;

??? }

??????

?

??? public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {

??????????????if (row == table.getSelectedRow()) {

??????????? panel.setBackground(table.getSelectionBackground());

?????? } else {

?????????? panel.setBackground(Color.WHITE);

?????? }

?????? return panel;

??? }

?

??? public Object getCellEditorValue() {

?????? return null;

??? }

}

?

?

热点排行