1

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経由で何も見つからず、自分で問題を解決できないため、これを解決するのを手伝ってください.

4

0 に答える 0