簡體   English   中英

如何使角落組件始終在JScrollPane中可見

[英]How to make a corner component always visible in a JScrollPane

特定

import javax.swing.*;

public class TestCornerComponent {

    public static void main(String args[]) {
        JTable table = new JTable();
        final JScrollPane scrollPane = new JScrollPane(table);

        /* button to put in corner */
        JButton cornerButton = new JButton("#");
        scrollPane.setCorner(JScrollPane.UPPER_TRAILING_CORNER,
            cornerButton);

        scrollPane.setVerticalScrollBarPolicy(
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);


        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                JFrame frame = new JFrame("Test corner component");
                frame.getContentPane().add(scrollPane);
                frame.setVisible(true);
            }
        });
    }
}

無論JTable是否為空,如何使cornerButton始終可見?

我看到SwingX中的JXTable實現了這一點,但我無法從源代碼中解讀它是如何完成的。

謝謝

我的問題是,當ScrollPane的列標題視口中存在某些內容時,JScrollPane僅顯示該按鈕。

我認為這只是問題的一半。 您需要視口中的組件占用一些空間。

我已經嘗試在那里放一個空的JPanel,但這似乎不起作用

嘗試視口中的空JPanel以及列標題中的面板:

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

public class TestCornerComponent {

    public static void main(String args[])
    {
        final JScrollPane scrollPane = new JScrollPane();

        /* button to put in corner */
        JButton cornerButton = new JButton("#");
        scrollPane.setCorner(JScrollPane.UPPER_TRAILING_CORNER, cornerButton);

        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

        JPanel column = new JPanel();
        column.setPreferredSize( new Dimension(100, cornerButton.getPreferredSize().height) );
        scrollPane.setColumnHeaderView( column );

        JPanel view = new JPanel();
        view.setPreferredSize( new Dimension(100, 100) );
        scrollPane.setViewportView( view );

        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                JFrame frame = new JFrame("Test corner component");
                frame.add(scrollPane);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM