`
lg_asus
  • 浏览: 190990 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JTable背景色與Boolean類型數據顯示衝突的問題

阅读更多
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class JTableDemo4 implements ActionListener{
	
	JTable table = null;
	JButton button1,button2;
	
	public JTableDemo4(){
		JFrame jf = new JFrame();
		button1 = new JButton("數學老師");
		button1.addActionListener(this);
		button2 = new JButton("學生阿呆");
		button2.addActionListener(this);
		JPanel panel = new JPanel();
		panel.add(button1);
		panel.add(button2);
		table = new JTable(new MyTableModel(1));
		table.setPreferredScrollableViewportSize(new Dimension(500,300));
		//設置行列的選擇模式
		table.setColumnSelectionAllowed(true);
		table.setRowSelectionAllowed(true);
		JScrollPane scrollPane = new JScrollPane(table);
		scrollPane.getViewport().setBackground(Color.white);
		//paintCell();//第一處
		
		jf.getContentPane().add(panel,BorderLayout.NORTH);
		jf.getContentPane().add(scrollPane,BorderLayout.CENTER);
		jf.pack();
		jf.setVisible(true);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	public static void main(String...args){
		new JTableDemo4();
	}
	
	public void paintCell(){
		for(int i=0;i<table.getColumnCount();i++){
			table.getColumn(table.getColumnName(i)).setCellRenderer(new MyTableRenderer());
		}
	}
	
	@Override
	public void actionPerformed(ActionEvent e){
		if(e.getSource()==button1){
			table.setModel(new MyTableModel(1));
		}
		if(e.getSource()==button2){
			table.setModel(new MyTableModel(2));
		}
		//paintCell();//第二處
//		System.out.println(table.getColumn("及格").getClass());
		table.revalidate();
	}
}


class MyTableModel extends AbstractTableModel{
	Object[][] p1 = {
			{"阿呆",new Integer(78),new Boolean(true)}
	};
	String[] n1 = {"姓名","成績","及格"};
	Object[][] p2 = {
			{"阿瓜",new Integer(58),new Boolean(false)},
			{"阿呆",new Integer(78),new Boolean(true)}
	};
	//String[] n2 = {"姓名","成績","及格"};
	//mode為1表示角色為阿呆,為2則表示角色為老師
	int mode = 1;
	public MyTableModel(int i){
		mode = i;
	}
	@Override
	public int getColumnCount(){
		if(mode==1){
			return n1.length;
		}
		else{
			return n1.length;
		}
	}
	@Override
	public int getRowCount(){
		if(mode==1){
			return p1.length;
		}else{
			return p2.length;
		}
	}
	@Override
	public Object getValueAt(int row,int col){
		if(mode==1){
			return p1[row][col];
		}else{
			return p2[row][col];
		}
	}
	@Override
	public String getColumnName(int col){
		if(mode==1){
			return n1[col];
		}else{
			return n1[col];
		}
	}
	@Override
	public Class getColumnClass(int col){
		return getValueAt(0,col).getClass();
	}
	@Override
	public boolean isCellEditable(int row,int col){
		return true;
	}
}

class MyTableRenderer extends DefaultTableCellRenderer{
	@Override
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		if(value!=null){
			switch(row%2){
			case 0:
				setBackground(Color.cyan);
				//setForeground(Color.black);
				break;
			case 1:
				setBackground(Color.pink);
				//setForeground(Color.black);
				break;
			default:
				setBackground(Color.yellow);
				break;
			}
		}
		 return   super.getTableCellRendererComponent(table,   value,isSelected,   hasFocus,   row,   column);
	}
	
}


這樣運行時,boolean類型數據是以JCheckBox來顯示的,可是如果把"第一處"與"第二處"都打開的話,boolean類型數據就用true false來顯示了,,請問怎么解決?
大家看到的話就幫我下忙啊。。。
分享到:
评论

相关推荐

    JTable使用自定义数据类型示例工程

    在这个特定的示例工程中,我们探讨了如何在`JTable`中使用自定义数据类型,特别是将Boolean类型的数据呈现为Checkbox的形式,同时根据Checkbox的勾选状态来改变单元格的背景颜色。这涉及到`TableCellRenderer`和`...

    Java的Jtable、从数据库取数据显示在表格中

    ### Java的JTable:从数据库取数据显示在表格中的关键技术点 #### 一、数据库操作与JDBC连接 在Java中,使用JTable显示数据库中的数据是一个常见的应用场景。首先,我们需要了解如何通过Java Database ...

    java取出mysql中数据,显示在jtable里面

    根据给定的文件信息,我们可以总结出以下关于如何使用Java从MySQL数据库中获取数据并在JTable中显示的相关知识点: ### 一、导入必要的库 在Java程序中操作MySQL数据库及Swing组件,需要导入以下几个包: 1. `java...

    JTable动态刷新数据

    JTable 动态刷新数据 JTable 动态刷新数据是指在 Java Swing 应用程序中,使用 JTable 组件展示数据,并实时更新数据的过程。这种技术在很多实际应用场景中非常有用,如股票交易平台、实时监控系统、电子表格等。 ...

    使用JTable显示数据查询

    使用JTable显示数据查询的数据集 包含数据库连接

    JTable (动态添加数据)

    这个场景中,我们探讨的是如何使用JavaBean来动态地向`JTable`添加数据,并将这些数据保存到Sql Server数据库,然后在`JTable`中显示。以下是关于这个主题的详细知识点: 1. **JTable组件**: `JTable`是Java ...

    TableCellRenderer的用法(JTable单元格背景颜色设置)

    实现设置JTable中某些单元格的背景色

    java Swing Jtable 下拉动态加载数据

    JTable实现下拉动态加载数据,滑动动态加载数据,纯原生态java。

    Java Swing实现JTable检测单元格数据变更事件的方法示例

    Java Swing 实现 JTable 检测单元格数据变更事件的方法示例 Java Swing 中的 JTable 是一个功能强大且灵活的表格组件,广泛应用于各种桌面应用程序中。然而,在实际开发中,我们经常需要检测单元格数据的变更事件...

    Excel内容复制到JTable中

    在Java Swing应用中,JTable是一个非常常用的组件,用于显示和操作二维表格数据。当我们需要从Excel文件中读取数据并展示在JTable上时,就需要进行一系列的处理步骤。以下是一些关于如何实现这个过程的关键知识点: ...

    JTable数据模型设置与数据库综合

    ### JTable数据模型设置与数据库综合应用解析 #### 一、引言 本文档主要介绍如何在Java应用程序中使用`JTable`组件结合SQL Server 2000数据库进行数据展示与管理。通过构建自定义的数据模型(`TableModel`),可以...

    JTable数据导出到Excel.rar

    下面我们将详细探讨`JTable`与Excel数据交换的相关知识点。 1. **JTable基本概念** `JTable`是Java Swing中用于显示和操作表格数据的组件。它可以动态地展示和修改数据,支持排序、选择、编辑等操作。`JTable`依赖...

    java语言JTable,model构造表格并显示后台数据.zip

    通过连接后台数据库,把后台数据显示在表格中。表格通过JTable和model方法构造和显示较为容易,其中model方法可以自然显示表格内容,本人学艺不精也是在经过各种试错之后,才得出了代码比较简易的方法,欢迎批评和...

    JTable自动换行

    这样的做法使得`JTable`更加灵活,可以适应各种复杂的数据显示需求。在实际项目中,你可以根据具体的需求对这个渲染器进行扩展和优化,比如添加更多的样式控制,或者处理不同类型的单元格数据。

    Jtable数据查询与界面跳转

    在Java编程领域,`JTable`是Swing库中的一个核心组件,用于在GUI应用程序中显示和操作表格数据。`JTable`不仅提供了一个美观的界面来展示数据,还允许用户进行交互,如选择行、编辑单元格以及执行数据查询等操作。本...

    JTable+显示数据库中的记录

    在Java编程中,`JTable` 是Swing库中的一个组件,用于在GUI应用程序中展示二维表格数据。它常被用来显示和编辑数据库中的记录。本篇内容将深入讲解如何利用`JTable`来显示数据库中的记录,以及涉及到的相关技术如...

    将JTable数据导出到Excel

    在Java编程环境中,`JTable`是Swing库中用于展示二维表格数据的组件,而将`JTable`中的数据导出到Excel是一种常见的需求,特别是在数据处理和报告生成的场景下。本教程将深入讲解如何实现这个功能,并提供一个名为`...

    JTable连接Access并显示

    本教程将深入探讨如何利用JTable与Microsoft Access数据库进行交互,并将数据动态地显示在表格中。这对于开发需要从数据库获取并展示数据的桌面应用来说是至关重要的。 首先,我们需要了解JTable的基本构造。JTable...

    实现JTable 数据的添加删除

    `View`则负责数据显示和用户交互。 ### 二、`DefaultTableModel`的使用 在Java中,`DefaultTableModel`是`TableModel`的一个简单实现,用于创建和管理表格数据。它可以动态地添加、删除和修改行数据。以下是如何...

    JTable颜色渲染代码

    例如,可以通过实现`getTableCellRendererComponent`方法来自定义不同条件下的单元格背景色或前景色。 - **行渲染器**:对于整个行的颜色定制,可以通过覆盖`JTable`的`prepareRenderer`方法来实现。这种方式可以...

Global site tag (gtag.js) - Google Analytics