私は奇妙な振る舞いをするアプレットを開発しています。これは通常の「ブラウザでアプレットを開始できません」という問題ではなく、もっと微妙なものです。アプレット隠しクラスなし例外
アプレットは、8つのタブを持つjtabbedpaneで構成されています。それぞれのタブは、ワークフローでデータ操作を行い、タブを循環する2つのボタン(前後)を備えています。
私はブラウザ(最新のクロムまたはFirefoxでこれを実行しても問題ありません)を実行すると、7番目のタブから8番目のタブに渡すときに一貫して減速することがわかります。後者では、カスタムテーブルモデルそのタブと日食でそれはうまく動作します。私は、jvmが私のカスタムテーブルモデルであるRateTableModelクラスのためのclassnotfoundexceptionをスローすることに気付きました。奇妙なのは、アプレットをIDEでテストしても、ブラウザに自己署名されたアプレットとしてテストしても、例外はどのコンソールでもスローされないことです。私はどこでも確認しました:空のcatchブロックはありません。すべての例外は常にstackstraceが出力され、例外が捕捉されないtry/catchブロックに私のtablemodelの初期化コードを入れます。さらに面白いのは、何も起こらなかったかのように実行時間がランダムである(今度はIDEでのみ)のと同じですが、ブラウザではGUIが通常の例外のように機能します。
なぜこのようなことが起こったのかについて私が尋ねたいことは何ですか。
RateTableModelクラスは、geotel.utilsパッケージにあります。このクラスには、このクラスをロードする前に定期的にインスタンス化する他のクラスがあり、このクラスがjarファイルに存在することを確認しました。開発に
詳細(多分読んでいる人のために、これは便利です):
アプレットは、アプレットは、次のHTMLファイルから実行される
jarsigner -keystore keystore3 C:\GestioneOneri.jar me3
コマンドを使用して署名されています
<?xml version="1.0" encoding="UTF-8"?>
<jnlp href="gestioneoneri.jnlp">
<information>
<title>Gestione Oneri Urbanistici</title>
<vendor>Geotel soc. coop.</vendor>
<offline-allowed />
</information>
<resources>
<j2se version ="1.6+" initial-heap-size="128m" max-heap-size="1024m"
href="http://java.sun.com/products/autodl/j2se" />
<jar href="GestioneOneri.jar" main="true" />
<jar href="mysql-connector-java-5.1.20-bin.jar"/>
<jar href="poi-3.9-20121203.jar"/>
<jar href="forms-1.3.0.jar"/>
</resources>
<applet-desc
name="Gestione Oneri Urbanistici"
main-class="geotel.gui.Login"
width="1024"
height="700"/>
</jnlp>
0123:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Titolo</title>
</head>
<body>
<script src="http://www.java.com/js/deployJava.js"></script>
<script>
var attributes = {code:'geotel.gui.Login.class',
archive:'GestioneOneri.jar,mysql-connector-java-5.1.20-bin.jar,poi-3.9-20121203.jar,forms-1.3.0.jar',
width:1024, height:700} ;
var parameters = {jnlp_href:'gestioneoneri.jnlp', portalUrl:'http://192.168.146.145:8080/GestioneOneriServlet', nomeUtente:'', numeroPratica:'', percorsoFileCalcoloOneri:"/", nomeFileCalcoloOneri:"calcoloOneri.xls"} ;
var version = '1.6' ;
deployJava.runApplet(attributes, parameters, version);
</script>
<noscript>This page requires JavaScript.</noscript>
</body>
</html>
JNLPファイルは以下のとおりです。
this.tm = new geotel.utils.RateTableModel(columnNames, oneriPratica, rate, rateizzazioniPreviste);
とクラスRateTableModelの定義は
public class RateTableModel extends AbstractTableModel
EDITがあるDatiRatePanel クラス:ClassNotFoundExceptionが発生し
コードは次のようである以上、いくつかのデバッグ手順の後、私はことがわかりましたデバッグビューにはスクリーンショットの状況があります
私は絶対に持っていません私がF5キーを押し続けるとそのキーが消えてしまうので、実行が続くと、クラスローダーは魔法のようにRateTableModelクラスを見つけることができます。どうすればこれを取り除くことができますか?
ありがとうございました!
EDIT2:Eclipseのドキュメントのキーアイコンを少し調べて、ロックされたオブジェクトのモニターであることがわかりました。私が知る限り、ここにはない同期コードブロックがある場所にモニターが表示されます(これらのブロックは呼び出されないと確信しています)。それは私を怒らせている...
EDIT3:各命令がどれくらい時間がかかるかについて、いくつかのprintlnsを入れようとしましたが、次にソースコードと出力があります。私はなぜ時間が "リセット"されているのか分かりません(あるいはそう思われます)。プリント2と4では、時間変数が初期化されていないスレッドがたくさんあるようです。
Long time = System.currentTimeMillis();
this.tm = new RateTableModel(columnNames, oneriPratica, rate, rateizzazioniPreviste);
time = System.currentTimeMillis() - time;
System.out.println("DatiRatePanel2.populatePanel() 1 time: " + time);
rateTable = new MyTable(tm, columnModel, this);
time = System.currentTimeMillis() - time;
System.out.println("DatiRatePanel2.populatePanel() 2 time: " + time);
table = new ExcelAdapter(rateTable);
time = System.currentTimeMillis() - time;
System.out.println("DatiRatePanel2.populatePanel() 3 time: " + time);
scrollPane = new JScrollPane(rateTable);
time = System.currentTimeMillis() - time;
System.out.println("DatiRatePanel2.populatePanel() 4 time: " + time);
scrollPane.getVerticalScrollBar().setUnitIncrement(10);
this.add(scrollPane, "1, 3, fill, fill");
aggiornaTotali();
this.invalidate();
this.validate();
this.repaint();
time = System.currentTimeMillis() - time;
System.out.println("DatiRatePanel2.populatePanel() 5 time: " + time);
出力:
DatiRatePanel2.populatePanel() 1 time: 2
DatiRatePanel2.populatePanel() 2 time: 1364288266968
DatiRatePanel2.populatePanel() 3 time: 2
DatiRatePanel2.populatePanel() 4 time: 1364288266969
DatiRatePanel2.populatePanel() 5 time: 3
EDIT4:Javaプラグインコンソールでレベル5活性化し、これは私が得たものである:
DettagliPratichePanel.updateObjects() impostazione oneri
network: Connessione a http://192.168.146.145:8080/GestioneOneriServlet/findWhereNomeConfigurazioneEqualsConfRateizzazioni con proxy=DIRECT
network: Connessione a http://192.168.146.145:8080/GestioneOneriServlet/findWhereNomeConfigurazioneEqualsConfRateizzazioni con proxy=DIRECT
network: Connessione a http://192.168.146.145:8080/GestioneOneriServlet/findWhereNomeConfigurazioneEqualsConfRateizzazioni con proxy=DIRECT
network: Connessione a http://192.168.146.145:8080/GestioneOneriServlet/findWhereNomeConfigurazioneEqualsConfRateizzazioni con proxy=DIRECT
network: Connessione a http://192.168.146.145:8080/GestioneOneriServlet/findByConfRateizzazioniConfRata con proxy=DIRECT
network: Connessione a http://192.168.146.145:8080/GestioneOneriServlet/findByConfRateizzazioniConfRata con proxy=DIRECT
network: Connessione a http://192.168.146.145:8080/GestioneOneriServlet/findByConfRateizzazioniConfRata con proxy=DIRECT
network: Connessione a http://192.168.146.145:8080/GestioneOneriServlet/findByConfRateizzazioniConfRata con proxy=DIRECT
DettagliPratichePanel.updateObjects() polizza
basic: JNLP2ClassLoader.findClass: geotel.utils.RateTableModel: try again ..
DatiRatePanel2.populatePanel() 1 time: 2
DatiRatePanel2.populatePanel() 3 time: 1364309403101
DatiRatePanel2.populatePanel() 4 time: 3
DatiRatePanel2.populatePanel() 5 time: 1364309403102
basic: JNLP2ClassLoader.findClass: geotel.utils.MyTable$ButtonsCellRenderer: try again ..
------------------------------------------------------------------------ Here starts trouble
network: Connessione a http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar con proxy=DIRECT
network: Connessione a http://192.168.146.129:8091/ con proxy=DIRECT
network: Connessione http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar con cookie "__ac="Qt/t/I4Nt7/qj0H5vhUrqR+ZrJYgcHJvZ2V0dGlzdGEx"; _ZopeId="97847822A52RRctuIzM""
network: CleanupThread used 1 us
network: Scaricamento risorsa: http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar
Content-Length: 1.940.942
Content-Encoding: null
network: URL http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar scritto su file C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-15459ea4-temp
security: File lista librerie sicure non trovato
cache: Create from verifier: JarSigningData{hasOnlySignedEntries=true, hasSingleCodeSource=true, hasMissingSignedEntries=false}
network: CleanupThread used 2 us
cache: Replacing MemoryCache entry (cnt=2) for http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jarwas=com.sun.deploy.cache.CacheEntry (29348568) now=com.sun.deploy.cache.CacheEntry (24374818)
network: Connessione a http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar con proxy=DIRECT
network: Connessione a http://192.168.146.129:8091/ con proxy=DIRECT
network: Connessione http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar con cookie "__ac="Qt/t/I4Nt7/qj0H5vhUrqR+ZrJYgcHJvZ2V0dGlzdGEx"; _ZopeId="97847822A52RRctuIzM""
network: CleanupThread used 1 us
network: Scaricamento risorsa: http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar
Content-Length: 1.940.942
Content-Encoding: null
network: URL http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar scritto su file C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-27c7ae17-temp
security: File lista librerie sicure non trovato
cache: Create from verifier: JarSigningData{hasOnlySignedEntries=true, hasSingleCodeSource=true, hasMissingSignedEntries=false}
network: CleanupThread used 1 us
cache: Replacing MemoryCache entry (cnt=3) for http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jarwas=com.sun.deploy.cache.CacheEntry (24374818) now=com.sun.deploy.cache.CacheEntry (8045053)
-------------------------------------This block is repeated at least 30 times before this
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\23\5d616017-2432b323
cache: MemoryCache: removed entry http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-515e0fde
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-515e0fde
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-642e11c6
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-642e11c6
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-36c18954
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-36c18954
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-3dd37d44
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-3dd37d44
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-74a8c32b
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-74a8c32b
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-2278e899
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-2278e899
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-36a95dca
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-36a95dca
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-15459ea4
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-15459ea4
cache: Create from verifier: JarSigningData{hasOnlySignedEntries=true, hasSingleCodeSource=true, hasMissingSignedEntries=false}
network: CleanupThread used 2 us
cache: Adding MemoryCache entry: http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar
network: Connessione a http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar con proxy=DIRECT
network: Connessione a http://192.168.146.129:8091/ con proxy=DIRECT
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\23\5d616017-1cffa7d0
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\14\39df63ce-72747a9e
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\15\7e499c8f-55d9e14b
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\23\5d616017-1ff05f86
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\14\39df63ce-3623cf5c
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\15\7e499c8f-767f4e5c
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-78a94a0b
network: Connessione http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar con cookie "__ac="Qt/t/I4Nt7/qj0H5vhUrqR+ZrJYgcHJvZ2V0dGlzdGEx"; _ZopeId="97847822A52RRctuIzM""
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-16cf3e35
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\14\39df63ce-3d8f935b
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\15\7e499c8f-2b757fb1
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\23\5d616017-65139493
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\14\39df63ce-1d5deb21
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\15\7e499c8f-3a4f46c6
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-48a86fb3
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-4b1ec669
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\23\5d616017-1c1ed2e1
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\14\39df63ce-35f43fda
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\15\7e499c8f-14bf2ddf
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-10a0c30f
network: CleanupThread used 1 us
network: Scaricamento risorsa: http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar
Content-Length: 1.940.942
Content-Encoding: null
network: URL http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar scritto su file C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-203bfb91-temp
security: File lista librerie sicure non trovato
cache: Create from verifier: JarSigningData{hasOnlySignedEntries=true, hasSingleCodeSource=true, hasMissingSignedEntries=false}
network: CleanupThread used 1 us
cache: Replacing MemoryCache entry (cnt=3) for http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jarwas=com.sun.deploy.cache.CacheEntry (20330403) now=com.sun.deploy.cache.CacheEntry (8313353)
cache: MemoryCache: removed entry http://192.168.146.129:8091/Scia/sportello-unico-edilizia/archivio-pratiche-edilizie/permesso_di_costruire.2012-10-25.0455740504/portal_url/++resource++java/GestioneOneri.jar
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-25fd39ec
cache: Closing CachedJarFile C:\Users\Andrea\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\51\58374d33-25fd39ec
私がここに理解できることであるというクラスローダ後内部クラスButtonsCellRendererを検索すると、このフラッディングが開始されます(これにより、Javaコンソールを含むWebページのすべてがブロックされます)。この問題は、それが内部クラスであるという事実によって引き起こされる可能性がありますか?
Joop Eggenが尋ねるように、私は私のJTableのコードを投稿しています。 パッケージgeotel.utils;
import geotel.configuration.Configuration;
import geotel.gui.DatiPersonaliPanel;
import geotel.gui.DatiRatePanel2;
import geotel.gui.GestionePratichePanel;
import geotel.gui.IManager;
import geotel.gui.ImportazionePanel;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
public class MyTable extends JTable
{
class ButtonsCellRenderer extends JPanel implements TableCellRenderer
{
private static final long serialVersionUID = -4945689480058875463L;
public Component getTableCellRendererComponent(final JTable table, Object value, boolean isSelected, boolean hasFocus, final int row, int column)
{
this.setLayout(new GridLayout(1, 1));
if(gestione instanceof ImportazionePanel)
{
if(column == 0)
{
URL editUrl = getClass().getResource("/resource/images/051.gif");
Image editImage = Toolkit.getDefaultToolkit().getImage(editUrl);
JButton edit = new JButton(new ImageIcon(editImage));
edit.setBorderPainted(false);
edit.setContentAreaFilled(false);
edit.setFocusPainted(false);
edit.setOpaque(false);
this.add(edit);
}
else
{
new Exception("else non gestito").printStackTrace();
}
}
else
{
if(column == 0)
{
URL editUrl = getClass().getResource("/resource/images/005.gif");
Image editImage = Toolkit.getDefaultToolkit().getImage(editUrl);
JButton editB = new JButton(new ImageIcon(editImage));
editB.setBorderPainted(false);
editB.setContentAreaFilled(false);
editB.setFocusPainted(false);
editB.setOpaque(false);
if(gestione instanceof GestionePratichePanel)
{
if(Configuration.getRuoloUtenteConnesso().getModificaPratica())
{
if(edit)
editB.setEnabled(true);
else
editB.setEnabled(false);
}
else
editB.setEnabled(false);
}
else if(gestione instanceof DatiRatePanel2)
{
if(getValueAt(row, 5) != null && !getValueAt(row, 5).equals(""))
editB.setEnabled(false);
else if(Configuration.getRuoloUtenteConnesso().getModificaPagamento())
{
if(edit)
editB.setEnabled(true);
else
editB.setEnabled(false);
}
else
editB.setEnabled(false);
}
else if(gestione instanceof DatiPersonaliPanel)
{
if(edit)
editB.setEnabled(true);
else
editB.setEnabled(false);
}
this.add(editB);
}
else
{
URL removeUrl = getClass().getResource("/resource/images/003.gif");
Image removeImage = Toolkit.getDefaultToolkit().getImage(removeUrl);
JButton remove = new JButton(new ImageIcon(removeImage));
remove.setBorderPainted(false);
remove.setContentAreaFilled(false);
remove.setFocusPainted(false);
remove.setOpaque(false);
if(gestione instanceof GestionePratichePanel)
{
if(Configuration.getRuoloUtenteConnesso().getEliminaPratica())
{
if(edit)
remove.setEnabled(true);
else
remove.setEnabled(false);
}
else
remove.setEnabled(false);
}
else if(gestione instanceof DatiRatePanel2)
{
if(getValueAt(row, 5) != null && !getValueAt(row, 5).equals(""))
remove.setEnabled(false);
else if(Configuration.getRuoloUtenteConnesso().getEliminaPagamento())
{
if(edit)
remove.setEnabled(true);
else
remove.setEnabled(false);
}
else
remove.setEnabled(false);
}
else if(gestione instanceof DatiPersonaliPanel)
{
if(edit)
remove.setEnabled(true);
else
remove.setEnabled(false);
}
this.add(remove);
}
}
return this;
}
}
class MyTableButtonMouseListener implements MouseListener
{
private JTable ptable;
public MyTableButtonMouseListener(JTable table)
{
ptable = table;
}
private void forwardEventToButton(MouseEvent e)
{
TableColumnModel columnModel = ptable.getColumnModel();
int column = columnModel.getColumnIndexAtX(e.getX());
int row = e.getY()/ptable.getRowHeight();
int value;
if(gestione instanceof ImportazionePanel)
{
if(row < ptable.getRowCount() && row >= 0 && column >= 0 && column < 1)
{
((ImportazionePanel) gestione).importSelected((String) ptable.getValueAt(row, 1));
ptable.repaint();
}
}
else
{
if(row < ptable.getRowCount() && row >= 0 && column >= 0 && column < 2)
{
try
{
value = (Integer) ptable.getValueAt(row, 2);
switch(column)
{
case 0:
{
gestione.editAction(value);
break;
}
case 1:
{
gestione.deleteAction(value);
break;
}
default:
break;
}
ptable.repaint();
}
catch(Exception e1)
{
e1.printStackTrace();
}
}
}
}
public void mouseClicked(MouseEvent e)
{
forwardEventToButton(e);
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
}
private static final long serialVersionUID = 3591458853529380099L;
protected IManager gestione;
protected TableModel tm;
protected boolean edit;
public MyTable()
{
super();
this.setBackground(new Color(244, 244, 244));
this.setShowHorizontalLines(true);
this.setShowVerticalLines(true);
this.getTableHeader().setReorderingAllowed(false);
this.setRowSelectionAllowed(true);
this.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
this.setFillsViewportHeight(true);
this.addMouseListener(new MyTableButtonMouseListener(this));
}
public MyTable(TableModel tm, TableColumnModel columns, IManager gestione, boolean edit)
{
super(tm, columns);
this.tm = tm;
this.gestione = gestione;
this.edit = edit;
// this.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
this.setBackground(new Color(244, 244, 244));
this.setShowHorizontalLines(true);
this.setShowVerticalLines(true);
this.getTableHeader().setReorderingAllowed(false);
this.setRowSelectionAllowed(true);
this.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
this.setFillsViewportHeight(true);
this.addMouseListener(new MyTableButtonMouseListener(this));
}
public TableCellRenderer getCellRenderer(int row, int column)
{
if(this.gestione instanceof ImportazionePanel)
{
if(column < 1)
{
return new ButtonsCellRenderer();
}
else
return super.getCellRenderer(row, column);
}
else
{
if(column < 2)
{
return new ButtonsCellRenderer();
}
else
{
return super.getCellRenderer(row, column);
}
}
}
public RataTableRow getRowObjectByIndex(int row)
{
if(gestione instanceof DatiRatePanel2)
{
return ((RateTableModel) tm).getRowObjectByIndex(row);
}
return null;
}
public Object[] getRowObjectById(Integer id)
{
Object[] ret = null;
for(int i = 0; i < tm.getRowCount(); i++)
{
if(tm.getValueAt(i, 2).equals(id))
{
ret = new Object[tm.getColumnCount()];
for(int j = 0; j < tm.getColumnCount(); j++)
ret[j] = tm.getValueAt(i, j);
break;
}
}
return ret;
}
public Component prepareRenderer(TableCellRenderer renderer, int Index_row, int Index_col)
{
Component comp = super.prepareRenderer(renderer, Index_row, Index_col);
// even index, selected or not selected
if(Index_row % 2 == 0)
{
if(!isCellSelected(Index_row, Index_col))
comp.setBackground(new Color(240, 240, 240));
else
{
comp.setForeground(Color.black);
comp.setBackground(Color.green);
}
}
else
{
if(!isCellSelected(Index_row, Index_col))
comp.setBackground(Color.white);
else
{
comp.setForeground(Color.black);
comp.setBackground(Color.green);
}
}
return comp;
}
}
jotelに追加されていないgeotel.utils.RateTableModelクラス内にいくつかの依存関係が存在する可能性があります。このクラスによってインポートされたクラスを確認し、1つずつ削除し、 。 – fmodos
あなたの返事ありがとうございました(私は前にそれを見ていませんでした)。インポートされたすべてのクラスがjarファイル内にあるかどうかを確認します。とにかく私はあなたに物事を尋ねたいと思います:もし瓶が今働いていなければ、輸入されたクラスを1つずつ取り除くとどうしたらうまくいくのでしょうか?私は既にクラスノットファウンデーションの授業があるのですが、別のクラスを追加していないと思いますか? – Andrea
import geotel.dao.factory.RataDaoFactory; import geotel.domain.OnerePratica; import geotel.domain.Rata; import geotel.domain.RateizzazionePrevista; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import javax.swing.table.AbstractTableModel; これは完全なインポートリストです。my classes(package geotel。*)はすべてjarファイル内にあります。他のクラスはjvmに存在しなければならない標準のJavaクラスです。 – Andrea