JTable 问题 求大神帮忙

我首先通过构建一个空的JTable(10,5)然后我自己手动输入0,1,2,3……如果输入的数大于20该单元格的背景色变为红色我该如何做啊~需要尽可能详细的代码... 我首先通过构建一个空的JTable (10,5) 然后我自己手动输入0,1,2,3……如果输入的数大于20 该单元格的背景色变为 红色 我该如何做啊~ 需要尽可能详细的代码 展开
 我来答
daay1986
2011-11-25 · TA获得超过6018个赞
知道大有可为答主
回答量:2208
采纳率:0%
帮助的人:1451万
展开全部
public class DrawFrame {

public static void main(String[] args) {
final JFrame frame = new JFrame();
frame.setContentPane(new JTable(10, 4) {

@Override
public TableCellRenderer getCellRenderer(int row, int column) {
return new TableCellRenderer() {

@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JTextField label = new JTextField();
label.setBorder(null);
if (value != null) {
label.setText(value.toString());
try {
if (Integer.parseInt(value.toString()) > 20) {
label.setBackground(Color.RED);
}
} catch (Exception e) {
}
}
return label;

}
};
}
});
frame.setVisible(true);
}
}
看看吧。 table就是一个renderer和一个editor把这两个玩转,你对table基本上就是很熟了。在熟悉UI,拿你就随心所欲。
追问
首先谢谢你 我知道了 JTable 是由渲染器和编辑器构成的 说白了就是JLabel 和JTextField的组合。。。一开始还想着要添加监听器看来没有比要 其实我是在做一个表格 每一列输入规范不同 如果不满足要求 就要把表格背景改为红色 例如学号列 如果输入学号大于8位 就把这个单元格改为红色  我还有一个问题 你能不能再找一找 JTable 事件处理的资料,例如对单元格右键单击 出线菜单选项 如复制 剪切 或者其他操作 给几个实例我就能明白
追答
第一句话就错了,JTable可以是任何界面进行编辑。你甚至可以再表格的单元格里放个表格,放个树,一切都是你自己决定。完完全全的自由。只要你想的到就能做得到。怎么显示可以完全自己去,完全没有限制,不是微软的东西,是个text你就只能text,java是自由的,甚至你可以把text当做容器往里加控件,完全没有问题,只是你敢不敢去想去做而已。
名片
2024-10-23 广告
正版Hyperworks软件多少钱,购买正版Hyperworks软件,免费咨询Altair Hyperworks软件中国区网站首页,HyperWorks软件提供了完整的CAE有限元分析解决方案,免费试用和咨询官网。... 点击进入详情页
本回答由名片提供
zhaotao_king
2011-11-25 · TA获得超过2455个赞
知道大有可为答主
回答量:863
采纳率:0%
帮助的人:1127万
展开全部
你这个输入是在单元格里面输入,还在20行
没看明白题意

补充下题意或者百度Hi我!~百天一般在线!~
更多追问追答
追问
我没说 二十行啊。。。  我就说简单点吧  我在JTable的单元格里面输入一个数如果这个数大于20 就把这个单元格的背景颜色改为红色
追答
还有一个类贴不上去,你再追问下!~
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;

public class MyTable extends JFrame {

private static final long serialVersionUID = -3954963139346495323L;

private JTable jt;

public MyTable() {
// TODO Auto-generated constructor stub
String[] tableNames={"姓名","年龄"};
Object[][] tableValues = {{"张三", 15}, {"李四", 21}};

Container c = getContentPane();
c.setLayout(new BorderLayout());

jt = new JTable(tableValues, tableNames);

jt.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
// TODO Auto-generated method stub
if(e.getType() == TableModelEvent.UPDATE){
//获取被修改的最后1行
int row = e.getLastRow();
//获取被修改的列
int col = e.getColumn();
// 获得编辑后单元格得值
Integer newvalue = 0;
try {
newvalue = Integer.valueOf(jt.getValueAt(row, col)
.toString());
} catch (Exception e2) {
System.out.println("输入的不是数字!");
}

if(newvalue > 20) {
jt.setDefaultRenderer(Object.class, new Renderer(row, col));
}
System.out.println(newvalue);
System.out.println(row);
System.out.println(col);
}
}
});

jt.setPreferredScrollableViewportSize(new Dimension(550,30));
JScrollPane scrollPane=new JScrollPane(jt);

c.add(scrollPane, BorderLayout.CENTER);

setSize(500, 600);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {
new MyTable();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ovary307
2011-11-25 · TA获得超过113个赞
知道答主
回答量:287
采纳率:0%
帮助的人:200万
展开全部
Carry的Gank不叫Gank,叫抢人头…懂我意思…? 多带回城就好把握了 carry 不要主动换线去找人杀,要记得自己的任务就是打钱 杀人就是在线上对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式