2011-08-04 11 views
1

アプリケーションをJava 1.5から1.6に移行しています(私は知っています)。JTableフリーズ・カラムがスクロールしない(Java 1.6)

テーブルが固定されています。我々はつまり、Javaの1.5の下で欲しかったように(おおよそ)

JScrollPane tablePane = new JScrollPane(); 
JTable mainTable = new JTable(); 
JTable frozenTable = new JTable() 
JPanel rowHeaderPanel = new JPanel(); 
rowHeaderPanel.add(frozenTable); 

tablePane.setRowHeaderView(rowHeaderPanel); 
tablePane.setViewportView(mainTable); 

(メインとfrozenTable表モデルは常に同じ数の行を持つ)

のように構成された本は、働いていた:私たちは、とのデータテーブルを持っていました左側にフリーズした列がいくつかあります。ペインを上下にスクロールすると、両方のテーブルが一致してスクロールされます。

Java 1.6に移行する以外にコードを変更することなく、断続的な(開発環境では)再現性のないバグがあります。

場合によっては、垂直方向にスクロールするとメインテーブルだけがスクロールします。フリーズしたテーブルはまったくスクロールしません。テーブルはリンクされていません。

誰もこのようなことを見たことがありますか?

答えて

2

私はこれまでにこのようなことは何も見ていませんし、再現できないので、デバッグするのは難しいでしょう。可能な限り小さな例(基本的にはSCCEE)に分解して、その動作を再現するかどうかを確認することをお勧めします。それでも断続的に存在するなら、それは1.6と関係するかもしれないが、私はそれを疑う。それがもはや存在しない場合、それはバックグラウンドで同時に起こっている何かかもしれません。

+0

合意 - これは難しいものですが、多くのプロダクションユーザーが私たちに叫んでいます。 1.6に移行したのは間違いなく現れました。最初に見たプロダクションリリースは、以前の1.5リリースとまったく同じコードでしたが、再コンパイルされました。この周りの実際のコードはかなり早いスイングコードです。再現性がないと、実際にはほとんど実行できませんが、何もしないことはオプションではありません。 – ashbyp

+0

私の推測は、恐ろしいSwingコードの中にあるものです。今日のSwingを使用して、最初から何かを書き直してください。 – jzd

+0

@jzd Java 1.5の現在のビルドはバグ(カスタムテーブル)に基づいている可能性があります。+ – mKorbel

4

間欠的なの問題は、GUIコンポーネントがevent dispatch thread上に構築されていることを確認するように促すはずです。 1.6への移行は、そのような異常を公開するだけのタイミングを変更した可能性があります。

2

私は同意する、これは厳しい問題です。しかし私たちのやり方は若干異なり、現在はJava 6の下で稼働しています。それで、IMOの問題を解決するのに役立ちます。私は初期コードと同じ変数名を使用しようとしました。

JViewport viewport = new JViewport(); 
viewport.setView(frozenTable); 
viewport.setPreferredSize(frozenTable.getPreferredSize()); 
tablePane.setRowHeaderView(viewport); 
tablePane.setCorner(JScrollPane.UPPER_LEFT_CORNER,frozenTable.getTableHeader()); 
+0

コードに感謝します。私は私のものを並べ替えるでしょう - しかし、これはスレッドの問題と思われます。 trashgodsの提案ごとに。問題は、文字通り、検証とチェックが必要なコード内の場所が100個あることです。スレッド問題 - arrgh。私はそれが誰かが以前に見ていた単純なものだったと思っていました。 – ashbyp

関連する問題