Проблема в создании вкладок JTabbedPane в центре - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь создать JTabbedPane в Java Swing. Требование заключается в том, что вкладки должны быть в центре и не должно быть никаких границ.

Изображение 1

| ---------------------------- [Tab1] [Tab2] -------------------------- |

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

Изображение 2

| ------- | ------- | -------- | ------ [Tab1] [Таб2] ------- | ---------| ---------- |

Выше приведено мнение, которое я имею сейчас. Я хочу удалить видимые границы (Границы | ------ | означает вкладку без имени)

Как создать только необходимое количество вкладок в центре окна / страницы ....?

В соответствии с моим требованием я могу создать максимум 6 вкладок на странице, но в этом сценарии я хочу, чтобы только две вкладки были видны / активны в центре страницы, как на рисунке 1.

Я пытался таким образом, что я создал 6 вкладок без какого-либо имени вкладки, затем назвал и сделал 4-й и 5-й в качестве активных вкладок, чтобы он чувствовал себя как центр, это работает отлично. Но границы вкладок до и после этих двух вкладок видны, как на рисунке 2.

Пожалуйста, найдите мою попытку скрыть границу ниже. Я не уверен, возможно ли скрытие границ .......?

Если возможно, приведенный ниже код не работает. Пожалуйста, поделитесь некоторыми мыслями, чтобы это сработало.

UIManager.put("TabbedPane.selected", Color.decode("#3391C7"));
UIManager.put("TabbedPane.borderHightlightColor", new ColorUIResource( Color.decode("#FFFFFF") ));
UIManager.put("TabbedPane.darkShadow", new ColorUIResource( Color.decode("#FFFFFF") ));
//Remove borders
UIManager.put("TabbedPane.contentBorderInsets", new Insets(0, 0, 0, 0));
tabbedPane = new JTabbedPane()
{
    public Color getBackgroundAt(int index){
        return Color.decode("#FFFFFF");
    }
    public Color getForegroundAt(int index) {
        if (getSelectedIndex() == index) {
            return Color.decode("#FFFFFF");
        }
        return Color.decode("#151B28");
    }
};
tabbedPane.setPreferredSize(new Dimension(1830, 880));
tabbedPane.setUI(new BasicTabbedPaneUI() {
    @Override
    protected int calculateTabHeight(
            int tabPlacement, int tabIndex, int fontHeight) {
        return 48; // the width of the tab
    }
    @Override
    protected int calculateTabWidth(
            int tabPlacement, int tabIndex, FontMetrics metrics) {
        return 264;// the width of the tab
    }
});
Font myFont1 = new Font(LayoutConstant.FONT_HELVETICA_NEUE, Font.PLAIN, 18);
//Below is the implementation of the six tabs. Tabs other than center are left 
//unnamed to make the two active tabs look like center

tabbedPane.setFont(myFont1);
tabbedPane.addTab("", null);
tabbedPane.setEnabledAt(0, false);
tabbedPane.addTab("", null);
tabbedPane.setEnabledAt(1, false);
tabbedPane.addTab("", null);
tabbedPane.setEnabledAt(2, false);
JComponent panel1 = localStorage.makeTextPanel("Tab1");
tabbedPane.addTab("Tab1", panel1);
tabbedPane.setMnemonicAt(3, KeyEvent.VK_3);
JComponent panel2 = externalStorage.makeTextPanel("Tab2");
tabbedPane.addTab("Tab2", panel2);
tabbedPane.setMnemonicAt(4, KeyEvent.VK_4);
tabbedPane.addTab("", null);
tabbedPane.setEnabledAt(5, false);
...