gpt4 book ai didi

java - 删除 JInternalFrame 标题栏中的点

转载 作者:行者123 更新时间:2023-11-30 07:53:09 24 4
gpt4 key购买 nike

我最近刚尝试在我的项目中使用 JInternalFrame 组件,我将其嵌套在 JPanel 中。但是,我注意到JInternalFrame标题栏 是点状的,我不喜欢它有点。我希望它看起来像任何其他标题栏一样,如 JDialog 的标题栏是平滑和坚实的。

看起来像这样。

enter image description here

这是唯一在标题栏 上有点的组件。顺便说一句,我问的原因是因为我使用了 Netbeans 的 GUI Builder 来生成它。

最佳答案

正如 camickr 已经说过的,需要制作一个自定义的 BasicInternalFrameTitlePane:

screenshot

import java.awt.*;
import java.util.Arrays;
import javax.swing.*;
import javax.swing.plaf.basic.*;
import javax.swing.plaf.metal.*;

public class InternalFrameTitlePaneTest {
public JInternalFrame makeInternalFrame() {
return new JInternalFrame("basic", true, true, true, true) {
@Override public void updateUI() {
super.updateUI();
setUI(new MetalInternalFrameUI(this) {
@Override protected JComponent createNorthPane(JInternalFrame w) {
BasicInternalFrameTitlePane p = new BasicInternalFrameTitlePane(w) {
@Override public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
d.height = 24;
return d;
}
@Override public void createButtons() {
super.createButtons();
Arrays.asList(closeButton, maxButton, iconButton).forEach(b -> {
b.setContentAreaFilled(false);
b.setBorder(BorderFactory.createEmptyBorder(2, 5, 2, 5));
});
}
};
p.setBorder(BorderFactory.createMatteBorder(
0, 0, 1, 0, MetalLookAndFeel.getPrimaryControlDarkShadow()));
return p;
}
});
}
};
}
public JComponent makeUI() {
JInternalFrame f1 = makeInternalFrame();
f1.setSize(150, 100);
f1.setLocation(0, 0);
f1.setVisible(true);

JInternalFrame f2 = new JInternalFrame("metal", true, true, true, true);
f2.setSize(150, 100);
f2.setLocation(80, 50);
f2.setVisible(true);

JDesktopPane desktop = new JDesktopPane();
desktop.add(f1);
desktop.add(f2);
return desktop;
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.getContentPane().add(new InternalFrameTitlePaneTest().makeUI());
f.setSize(320, 240);
f.setLocationRelativeTo(null);
f.setVisible(true);
});
}
}

关于java - 删除 JInternalFrame 标题栏中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45069808/

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