Java 6u16、WinXP SP3 で Swing を使用する皆さん、
こんにちは。次のケースで助けが必要です。基本的に、私は JScrollPane 内で JTable を使用し、scrollPane では右から左のコンポーネントの向きを適用します。私が得る最終結果は、テーブルが実際に右側に取り付けられているというものですが、スクロールペインがテーブルの幅よりも大きい場合、ヘッダーは左側に配置されます。これは、カスタム テーブル ヘッダーとテーブル列の AUTO_RESIZE_OFF でのみ発生します (水平スクロールを取得するため)。
2 番目の (関連する) 問題は、縦のグリッド線をドラッグして列のサイズを変更することです。テーブルの列の行が右に移動すると、ヘッダー行が左に移動します。私は2つのテストケースを持っています。1 つ目はhttp://www.swebb99.f2s.com/GroupableHeader/のコードを使用します。これは、一部のサブ列ヘッダーをグループ化するために使用されるテーブル ヘッダーのオープン ソース実装です。GroupableColumnExample.java の main() に追加してください:
frame.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
2 番目のテスト ケースでは、ネストされたテーブル ヘッダーの JIDE (www.jidesoft.com) 実装を同じ目的で使用し、同じ結果を得ています。
import java.awt.ComponentOrientation;
import javax.swing.*;
import com.jidesoft.grid.JideTable;
public class TestCase {
public static void main(String[] args) {
JFrame frame = new JFrame("Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JideTable table = new JideTable(
new Object[][]{{"1", "2"}}, new String[]{"3", "4"});
//this line adds the custom header and the problem begins
table.setNestedTableHeader(true);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
frame.add(new JScrollPane(table));
//make frame bigger than needed to display the table
frame.setSize(200, 200);
frame.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
frame.setVisible(true);
}
}
Google経由で何も見つからず、自分で問題を解決できないため、これを解決するのを手伝ってください.