标签后的自由空间上的JPanel

时间:2014-12-23 23:28:29

标签: java swing jpanel jtabbedpane

我想在JPanel

的最后一个标签后添加JTabbedPane

我有这个: Tengo esto-I have This

我想要这样的事情: Quiero Esto-I want this

最重要的部分是JPanel标签后的布局可能会有所不同,需要在调整主JFrame时调整其大小。

我尝试使用OverlayLayoutJLayeredPane和Glass Panel,但没有运气。

1 个答案:

答案 0 :(得分:3)

  

我尝试使用OverlayLayout,

以下是适用于OverlayLayout的示例:

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

public class TabbedPaneWithComponent
{
    private static void createAndShowUI()
    {
        JPanel panel = new JPanel();
        panel.setLayout( new OverlayLayout(panel) );

        JTabbedPane tabbedPane = new JTabbedPane();
        tabbedPane.add("1", new JTextField("one"));
        tabbedPane.add("2", new JTextField("two"));
        tabbedPane.setAlignmentX(1.0f);
        tabbedPane.setAlignmentY(0.0f);

        JCheckBox checkBox = new JCheckBox("Check Me");
        checkBox.setOpaque( false );
        checkBox.setAlignmentX(1.0f);
        checkBox.setAlignmentY(0.0f);

        panel.add( checkBox );
        panel.add(tabbedPane);

        JFrame frame = new JFrame("TabbedPane With Component");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add( panel );
        frame.setLocationByPlatform( true );
        frame.setSize(400, 100);
        frame.setVisible( true );
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}

当然只有空间可用才能显示组件。

唯一合适的解决方案是创建一个自定义选项卡式窗格UI,允许您向右添加组件。我不知道该怎么做。