问题描述
写了一个JApplet小程序,需要在指定的JTable单元格改变颜色。比较简单的一种做法是给单元格的内容增加HTML标签,比如:<html><bodycolor='#0000FF'>Value</body></html>但是在JRE版本是6u22以上时,只有在第一次访问这个JApplet时,指定颜色的单元格能正常显示内容和颜色。如果在IE页面上点右键刷新时,指定颜色的单元格将显示成空白!我在不同的JRE版本上试了以上的操作,发现在JRE6u21之前的版本没有这个问题,不管什么时候访问这个程序都能正常显示单元格的内容和颜色。这个问题看起来和JRE版本有关,有没有人知道原因?万分感谢以下是我的代码html部分:<HTML><HEAD></HEAD><BODY><APPLETCODE=JTableDemo.classMAYSCRIPTHEIGHT=150WIDTH=200></APPLET></BODY></HTML>java部分:importjava.awt.BorderLayout;importjava.awt.Container;importjavax.swing.JApplet;importjavax.swing.JFrame;importjavax.swing.JScrollPane;importjavax.swing.JTable;importjavax.swing.JTextArea;importjavax.swing.event.TableModelEvent;importjavax.swing.event.TableModelListener;importjavax.swing.table.AbstractTableModel;publicclassJTableDemoextendsJApplet{privateJTextAreatxt=newJTextArea(4,20);//TheTableModelcontrolsallthedata:classDataModelextendsAbstractTableModel{ Stringone="<html><bodycolor='#0000FF'>one</body></html>"; //changethecolortoBLUEhere★★★Object[][]data={{one,"two","three","four"},{"five","six","seven","eight"},{"nine","ten","eleven","twelve"},};publicintgetColumnCount(){returndata[0].length;}publicintgetRowCount(){returndata.length;}publicObjectgetValueAt(introw,intcol){returndata[row][col];}publicvoidsetValueAt(Objectval,introw,intcol){data[row][col]=val;//Indicatethechangehashappened:fireTableDataChanged();}}publicvoidinit(){Containercp=getContentPane();JTabletable=newJTable(newDataModel());cp.add(newJScrollPane(table));cp.add(BorderLayout.SOUTH,txt);}publicstaticvoidmain(String[]args){run(newJTableDemo(),350,200);}publicstaticvoidrun(JAppletapplet,intwidth,intheight){JFrameframe=newJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(applet);frame.setSize(width,height);applet.init();applet.start();frame.setVisible(true);}}
解决方案
解决方案二:
路过