我做了一个applet,前期是放在frame里面测试的
运行一切良好但是放在网页上之后,就不能正确运行了applet里面包括一个table,一个panel
通过table里面的复选框勾选与否,来刷新panel想问一下:
会有哪些原因导致这种情况的?
解决方案 »
- 图形界面遇到的问题在点击修改时出现了一点小问题
- 这个异常是什么玩意?
- jbuilder2005编译老出现空指针异常,请大虾帮帮看看源代码。感激不尽
- [求职]初学java 遇到拦路虎
- Tomcat下文件路径问题请教。up有分
- xml的小问题
- 如何在JAVA程序里打开硬盘中的文件?
- 我想实现按下表单中的一个按钮后弹出一个对话框要求输入数字,确定后将数字在当前页面中显示(高手请进!)
- 深入讨论Java效率,关心Java前途者请进
- 遇到一个难题,请教高手!!!
- (重分请教:)Sun Java Creator 打成 WAR 包后如何布署在JBOSS下面 (来者都有分,帮顶也行)
- applet的一个弱弱问题。。。。。
如果不能正确显示,可以看看你的嵌入代码或者JDK_HOME设置是否正确;
如果不能正确运行,你可以看看是不是你混用了带“J”与不带“J”的组件,
他们一个轻量级一个重量级,有时候刷新是不太好用。你去查查,如果确是这方面的原因,贴上来再说解决之道。
谢谢shengli_liao(我是谁?) 的拨冗赐教应该是不能正确运行,如table不能同时选择两个复选框,而且对panel的刷新也不太友好程序的组件都是使用的swint里面的带"J"的
只使用了awt的geom包和事件里面的一些类这也有影响么??
和awt的geom包及事件里面的一些类不会有影响,我做过很多表中带组件的程序,都能正确运行。
要不你把table中选择复选框的响应事件及panel的刷新段程序复制上来,别复制所有的,选择关键的就好。
table和panel都是自己扩展的table.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent tme) {
for (int i = 1; i < table.getRowCount(); i++) {
if (table.getValueAt(i, 0).equals(Boolean.TRUE)) {
...//这里是遍历每个复选框,如果选中,则添加到一个List里面
}
}
panel.setList(list);
panel.repaint();
}把list传给panel之后,重绘是调用panel的repaint()方法的
还是你麻烦你看看这个思路
2、你覆盖了panel的repaint方法或者paint方法么?
如果覆盖了,第一句话加上super.repaint()和super.paint(g);
3、表格中修改事件我向来不支持用这种做法,因为它可能带来死循环。
前面两条的处理都是如你所言
但是第三条,你是怎么样的处理呢??覆盖table的渲染器吗?
Tm = new EditTbModel(title,new Vector()){
public void setValueAt(Object value,int row,int col){
hasSaved = false;
FlowInStru flow = getSelectedFlowInStru();
if(flow==null)return; if(col==3||col==4){
try{
Double.parseDouble(value.toString());
}
catch(Exception ex){
MyJOptionPane.showErrorDialog(
"水位数据输入错误,请重新输入...");
return;
}
}
if(col==3)
flow.begLevel = ComFuns.getDoubleValue(value);
else if(col==4)
flow.endLevel = ComFuns.getDoubleValue(value); super.setValueAt(value,row,col);
}
};当然这种处理不见得就特别好,所谓萝卜白菜,各有所爱。
请问,你是如何触发Table里改变值呢?
Tb.setValueAt()=>Tm.setValueAt()=>Tb.getValueAt()
我使用的方法是控制过程中的Tm.setValueAt()