JSplitPane: возможно ли иметь одну сторону пустой / прозрачной, чтобы видеть нижний слой внизу? - PullRequest
0 голосов
/ 14 февраля 2019

Моя цель состоит в том, чтобы иметь нижний слой, который будет большим JPanel, и слой выше того, который содержит только одну половину JSplitPane.Намерение состоит в том, чтобы я мог расширять и сжимать панель разделения, в то время как панель внизу не изменялась, а только закрывалась.

В моем исследовании единственной подобной вещью, которую я обнаружил, был этот вопрос:

JSplitPane в JLayeredPane

Цель плаката такая же, как у меня, но они так и не получили ответа.

Возможно ли это?

1 Ответ

0 голосов
/ 14 февраля 2019

Можно ли иметь одну сторону пустой / прозрачной, чтобы видеть нижний слой под ней?

Если вы хотите видеть фон родительского компонента, то вам нужно сделать прозрачным дочерний компонент.

Итак, в этом случае вам нужно сделать разделенную панель прозрачной.Вам также необходимо добавить прозрачный компонент в разделенную панель.

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

public class SplitPaneTransparent extends JPanel
{
    public SplitPaneTransparent()
    {
        setLayout( new BorderLayout() );
        setBackground( Color.YELLOW );

        JSplitPane splitPane = new JSplitPane();
        splitPane.setOpaque( false );
        add( splitPane );

        JPanel left = new JPanel();
        left.setBackground( Color.RED );

        splitPane.setLeftComponent( left );
        splitPane.setRightComponent( Box.createHorizontalStrut(0) );
    }

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("SplitPane Transparent");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new SplitPaneTransparent());
        frame.setSize(300, 200);
        frame.setLocationByPlatform( true );
        frame.setVisible( true );
    }

    public static void main(String[] args) throws Exception
    {
        java.awt.EventQueue.invokeLater( () -> createAndShowGUI() );
/*
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowGUI();
            }
        });
*/
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...