gpt4 book ai didi

java - 自定义UI绘制问题

转载 作者:行者123 更新时间:2023-11-30 05:09:40 25 4
gpt4 key购买 nike

我有一个 JInternalFrame,我正在向其应用自定义 UI。 UI 绘制组件,但是当我将 JPanel 添加到 JInternalFrame 时,它​​不会显示。我认为 UI 正在绘制整个组件,但是如何绘制 UI 然后绘制组件呢?

但是如果有人有更好的方法,请告诉我!谢谢!

public class ClassInternalFrame extends JInternalFrame {
public static Color currentColor;
public static final Color CLASS_TYPE = new Color(148, 227, 251);

public ClassInternalFrame(String title, Color classType) {
super(title, true, true, false, true);
currentColor = classType;
super.setUI(new ClassFrameUI());

Container pane = super.getContentPane();
pane.setLayout(new BorderLayout());

JPanel titlePanel = new JPanel();
titlePanel.setPreferredSize(new Dimension(0, 20));
pane.add(titlePanel, BorderLayout.NORTH);

titlePanel.setBorder(new MatteBorder(1, 1, 1, 1, Color.yellow));
}

}

class ClassFrameUI extends InternalFrameUI {
private final static ClassFrameUI frmUI = new ClassFrameUI();

public static ComponentUI createUI(JComponent c) {
return frmUI;
}

@Override
public void paint(Graphics g, JComponent c)
{
Graphics2D g2d = (Graphics2D) g;

g2d.setColor(Color.LIGHT_GRAY);
g2d.fillRect(0, 0, c.getWidth(), c.getHeight());

g2d.setColor(ClassInternalFrame.currentColor);
g2d.fillRect(0, 0, c.getWidth(), 20);

g2d.setColor(Color.DARK_GRAY);
g2d.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0, new float[] { 1, 0 }, 0));
g2d.drawRect(0, 0, c.getWidth()-1, c.getHeight()-1);
g2d.drawLine(0, 20, c.getWidth(), 20);


}
}

最佳答案

问题不在于您在任何内容上进行绘画,而是 InternalFrameUI 绝对不执行任何操作(如果确实如此,您还需要调用 super.paint(g, c) ;)。通常,组件的绘制是由子类(例如BasicInternalFrameUI)完成的。您似乎正在尝试绘制自定义标题栏,这是 BasicInternalFrameUI 委托(delegate)给 BasicInternalFrameTitleBar 的任务。

关于java - 自定义UI绘制问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3876754/

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