gpt4 book ai didi

java - 如何将组件放在右向 JTabbedPane 中的选项卡下方

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:16 24 4
gpt4 key购买 nike

所以我偶然发现了在 JTabbedPane 中左右放置选项卡(即 setTabPlacement(JTabbedPane.RIGHT)),我喜欢它的外观。我需要的是利用标签下方留下的空间。我目前有一列 JButton,但它们被推到一边,留下很多空白。

关于如何做到这一点有什么想法吗?某种自定义叠加层之类的?

Here's a screenshot .在代码中,我基本上有一个水平对齐的框,JTabbedPane 在 JTree 上,然后是按钮列。

boxOfEverything.add(tabbedPane);
boxOfEverything.add(boxColumnButtons);

Screenshot here .

最佳答案

我做了这个community wiki因为这个答案不是我的。 @cheesecamera 似乎在另一个 forum 上发布了同样的问题并在那里得到了答案。我把答案复制下来,让来这里找答案的人都能得到答案。

想法是使用swing的glasspane

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

public class RightTabPaneButtonPanel {

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
new RightTabPaneButtonPanel().makeUI();
}
});
}

public void makeUI() {
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setTabPlacement(JTabbedPane.RIGHT);
JPanel panel = new JPanel(new GridLayout(0, 1));

for (int i = 0; i < 3; i++) {
JPanel tab = new JPanel();
tab.setName("tab" + (i + 1));
tab.setPreferredSize(new Dimension(400, 400));
tabbedPane.add(tab);

JButton button = new JButton("B" + (i + 1));
button.setMargin(new Insets(0, 0, 0, 0));
panel.add(button);
}

JFrame frame = new JFrame();
frame.add(tabbedPane);
frame.pack();
Rectangle tabBounds = tabbedPane.getBoundsAt(0);

Container glassPane = (Container) frame.getGlassPane();
glassPane.setVisible(true);
glassPane.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.fill = GridBagConstraints.NONE;
int margin = tabbedPane.getWidth() - (tabBounds.x + tabBounds.width);
gbc.insets = new Insets(0, 0, 0, margin);
gbc.anchor = GridBagConstraints.SOUTHEAST;

panel.setPreferredSize(new Dimension((int) tabBounds.getWidth() - margin,
panel.getPreferredSize().height));
glassPane.add(panel, gbc);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}

关于java - 如何将组件放在右向 JTabbedPane 中的选项卡下方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5468522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com