Неправильная ориентация компонента JTableHeader с помощью RIGHT_TO_LEFT + AUTO_RESIZE_OFF в JScrollPane - PullRequest
1 голос
/ 01 августа 2010

Использование Swing на Java 6u16, WinXP SP3
Привет всем. Мне нужна помощь, пожалуйста, в следующем случае. В основном я использую JTable внутри JScrollPane, что на scrollPane я применяю компонентную ориентацию справа налево. Окончательный результат, который я получаю, таков, что таблица действительно прикреплена справа, но заголовок помещается слева, когда область прокрутки больше ширины таблицы. Это происходит только с пользовательскими заголовками таблиц и AUTO_RESIZE_OFF для столбцов таблицы (чтобы получить горизонтальную прокрутку).

Вторая (связанная) проблема - это перетаскивание вертикальных линий сетки для изменения размера столбцов - строка заголовка перемещается влево, когда Строка столбца таблицы перемещается вправо. У меня есть 2 теста. Первый использует код из http://www.swebb99.f2s.com/GroupableHeader/. Это реализация заголовка таблицы с открытым исходным кодом, которая используется для группировки некоторых заголовков подколонок. Пожалуйста, добавьте к main () в GroupableColumnExample.java:

frame.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

Во втором контрольном примере используется реализация 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 и не могу решить проблему самостоятельно.

...