سؤال

هل هناك أي طريقة لتمكين شريط التمرير الأفقي عند الضرورة؟

وكان الوضع كالآتي:لقد قمت JTable, ، إحدى الخلايا، تخزن كمية طويلة من البيانات.وبالتالي، أنا بحاجة إلى شريط التمرير الأفقي.

أي شخص لديه فكرة عن هذا؟

هل كانت مفيدة؟

المحلول

أولا، إضافة JTable الخاص داخل JScrollPane وتعيين سياسة لوجود أشرطة التمرير:

new JScrollPane(myTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

وبعد ذلك، تشير إلى أن JTable الخاص بك يجب أن لا لصناعة السيارات في تغيير حجم الأعمدة من خلال تحديد طريقة AUTO_RESIZE_OFF:

myJTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

نصائح أخرى

ومجموعة من AutoResizeMode إلى OFF في خصائص jTable

للإشارة، هنا أ الحد الأدنى من المثال التابع النهج المقبول.علاوة على ذلك،

image

import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;

/**
 * @see https://stackoverflow.com/a/37318673/230513
 */
public class Test {

    private void display() {
        JFrame f = new JFrame("Test");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        TableModel model = new AbstractTableModel() {
            private static final int N = 32;

            @Override
            public int getRowCount() {
                return N;
            }

            @Override
            public int getColumnCount() {
                return N;
            }

            @Override
            public Object getValueAt(int rowIndex, int colIndex) {
                return "R" + rowIndex + ":C" + colIndex;
            }
        };
        JTable table = new JTable(model) {
            @Override
            public Dimension getPreferredScrollableViewportSize() {
                return new Dimension(320, 240);
            }
        };
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        f.add(new JScrollPane(table));
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Test()::display);
    }
}

وبالنسبة لي كان يعمل:

<اقتباس فقرة>   

وtable.setAutoscrolls (صحيح)؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top