Горизонтальная прокрутка + JTable + Java - PullRequest
5 голосов
/ 13 сентября 2011

Я проверил вопросы по stackoverflow относительно получения горизонтальной прокрутки на JTable для работы. Настройка AUTO_RESIZE_OFF возвращает мне горизонтальную полосу прокрутки, но в то же время таблица не использует всю ширину панели прокрутки.

Я немного прочитал, и выяснилось, что это была ошибка с 1998 года (Oracle исправит это?)

Я видел некоторые предложения о методах переезда и т. Д., Но ни один из них не работал для меня. Так у кого-нибудь есть ответ? Это будет высоко ценится. По сути, мне нужно, чтобы таблица автоматически меняла размеры, но включаю горизонтальную полосу прокрутки перед сжатием любого из имен столбцов.

Спасибо.

Ответы [ 4 ]

6 голосов
/ 13 сентября 2011

после оценки против других ответов - JXTable (в проекте SwingX ) имеет дополнительное свойство макета столбца, которое

  • заполняет горизонтальный видовой экран (то есть увеличивает ширину столбца), если их объединенный префикс меньше текущей ширины, с учетом autoResizeMode
  • сохраняет размеры столбцов на их префе и показывает горизонтальную полосу прокрутки, если их объединенный префикс больше текущей ширины

Необходима небольшая внутренняя настройка, поэтому (предвзято) предложит использовать JXTable.Или посмотрите его код и c & p - все разрешено, все с открытым исходным кодом: -)

3 голосов
/ 13 сентября 2011

Проверьте эту ссылку и попробуйте решить эту проблему

http://www.daniweb.com/software-development/java/threads/29263

JTable с горизонтальной полосой прокрутки

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;

public class ScrollableJTable {

    public static void main(String[] args) {
        new ScrollableJTable();
    }

    public ScrollableJTable() {
        JFrame frame = new JFrame("Creating a Scrollable JTable!");
        JPanel panel = new JPanel();
        String data[][] = {
            {"001", "vinod", "Bihar", "India", "Biology", "65", "First"},
            {"002", "Raju", "ABC", "Kanada", "Geography", "58", "second"},
            {"003", "Aman", "Delhi", "India", "computer", "98", "Dictontion"},
            {"004", "Ranjan", "Bangloor", "India", "chemestry", "90", "Dictontion"},
            {"001", "vinod", "Bihar", "India", "Biology", "65", "First"},
            {"002", "Raju", "ABC", "Kanada", "Geography", "58", "second"},
            {"003", "Aman", "Delhi", "India", "computer", "98", "Dictontion"},
            {"004", "Ranjan", "Bangloor", "India", "chemestry", "90", "Dictontion"},
            {"001", "vinod", "Bihar", "India", "Biology", "65", "First"},
            {"002", "Raju", "ABC", "Kanada", "Geography", "58", "second"},
            {"003", "Aman", "Delhi", "India", "computer", "98", "Dictontion"},
            {"004", "Ranjan", "Bangloor", "India", "chemestry", "90", "Dictontion"},
            {"001", "vinod", "Bihar", "India", "Biology", "65", "First"},
            {"002", "Raju", "ABC", "Kanada", "Geography", "58", "second"},
            {"003", "Aman", "Delhi", "India", "computer", "98", "Dictontion"},
            {"004", "Ranjan", "Bangloor", "India", "chemestry", "90", "Dictontion"},
            {"001", "vinod", "Bihar", "India", "Biology", "65", "First"},
            {"002", "Raju", "ABC", "Kanada", "Geography", "58", "second"},
            {"003", "Aman", "Delhi", "India", "computer", "98", "Dictontion"},
            {"004", "Ranjan", "Bangloor", "India", "chemestry", "90", "Dictontion"},
            {"001", "vinod", "Bihar", "India", "Biology", "65", "First"},
            {"002", "Raju", "ABC", "Kanada", "Geography", "58", "second"},
            {"003", "Aman", "Delhi", "India", "computer", "98", "Dictontion"},
            {"004", "Ranjan", "Bangloor", "India", "chemestry", "90", "Dictontion"},
            {"001", "vinod", "Bihar", "India", "Biology", "65", "First"},
            {"002", "Raju", "ABC", "Kanada", "Geography", "58", "second"},
            {"003", "Aman", "Delhi", "India", "computer", "98", "Dictontion"},
            {"004", "Ranjan", "Bangloor", "India", "chemestry", "90", "Dictontion"},
            {"001", "vinod", "Bihar", "India", "Biology", "65", "First"},
            {"002", "Raju", "ABC", "Kanada", "Geography", "58", "second"},
            {"003", "Aman", "Delhi", "India", "computer", "98", "Dictontion"},
            {"004", "Ranjan", "Bangloor", "India", "chemestry", "90", "Dictontion"}
        };
        String col[] = {"Roll", "Name", "State", "country", "Math", "Marks", "Grade"};
        JTable table = new JTable(data, col);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        JTableHeader header = table.getTableHeader();
        header.setBackground(Color.yellow);
        JScrollPane pane = new JScrollPane(table);
        panel.add(pane);
        frame.add(panel);
        frame.pack();
//        frame.setSize(500, 200);
//        frame.setUndecorated(true);
//        frame.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
2 голосов
/ 13 сентября 2011

Ну вот несколько ссылок, надеюсь, они не сломаются.Страница загрузки swinglabs находится здесь:

http://swinglabs.org/downloads.jsp

, но во время моего посещения сайта эти загрузки были прерваны (это может быть исправлено сейчас), после небольшого осмотра яЯ нашел доступ к их серверу здесь:

http://java.net/downloads/swingx/releases/1.6.2/

И это почти все, что у меня было, просто найти библиотеки.Это был только вопрос извлечения и добавления файлов .jar в мой проект, а затем импорта JXTable (org.jdesktop.swingx.JXTable).

JXTable расширяет обычный JTable (см. Документацию: http://download.java.net/javadesktop/swinglabs/releases/0.8/docs/api/org/jdesktop/swingx/JXTable.html) Так что все обычные методы JTable и т. Д. Все еще доступны.

После импорта библиотеки это был просто вопросприказывая горизонтальной прокрутке таблицы

JXTable table = new JXTable(yourTableModel)
table.setHorizontalScrollEnabled(true)

Swing labs предоставляет прекрасный учебник, объясняющий все улучшения, внесенные в JTable. См. учебник здесь:

http://swinglabs.org/docs/components/JXTable/tutorial.jsp?step=0

Надеюсь, это поможет, действительно помогло мне. Спасибо Клеопатре за указание правильного пути.

2 голосов
/ 13 сентября 2011

Вы должны правильно установить ширину таблицы в столбце, больше о здесь или здесь , примеры выполнения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...