gpt4 book ai didi

java - 如何在 Java 中的 JFrame 上的 JPanel 上绘画

转载 作者:行者123 更新时间:2023-12-01 23:36:38 25 4
gpt4 key购买 nike

这可能是一个重复问题,但我找不到适合我的解决方案。我有一个JFrame这是我的根 Pane ,在该框架上我放置了 JLabel ,一个JTextArea ,以及 JPanel 。我尝试实现在JPanel上绘制的paint方法但它似乎不起作用。

这是代码:

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

@SuppressWarnings("serial")
public class CelsiusConverterGUI extends JComponent{
public static void addComponentsToPane(Container pane) {
pane.setLayout(null);

JPanel emptyLabel = new JPanel();
JLabel Right = new JLabel("bye");
JTextArea text = new JTextArea("hi");

emptyLabel.setMaximumSize(new Dimension(900, 400));
emptyLabel.setPreferredSize(new Dimension(900, 400));
emptyLabel.setMaximumSize(new Dimension(900, 400));

Right.setMaximumSize(new Dimension(450, 200));
Right.setPreferredSize(new Dimension(450, 200));
Right.setMaximumSize(new Dimension(450, 200));

text.setMaximumSize(new Dimension(450, 200));
text.setPreferredSize(new Dimension(450, 200));
text.setMaximumSize(new Dimension(450, 200));

pane.add(emptyLabel);
pane.add(Right);
pane.add(text);

Insets insets = pane.getInsets();
Dimension size = emptyLabel.getPreferredSize();
emptyLabel.setBounds(0 + insets.left, 0 + insets.top,
size.width, size.height);
size = Right.getPreferredSize();
Right.setBounds(450 + insets.left, 400 + insets.top,
size.width, size.height);
size = text.getPreferredSize();
text.setBounds(0 + insets.left, 400 + insets.top,
size.width, size.height);
}

public static void createAndShowGUI(){
JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

addComponentsToPane(frame.getContentPane());

Insets insets = frame.getInsets();
frame.setSize(900 + insets.left + insets.right,
600 + insets.top + insets.bottom);
frame.setVisible(true);
}

public static void main(String[] args){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}

public void paintComponent(Graphics g){
super.paint(g);
g.setColor(Color.RED);
g.fillRect(0, 0, 90, 40);
}
}

请告诉我为什么这不起作用。

最佳答案

您已覆盖 CelsiusConverterGUI 中的 paintComponent,但从未实际将组件实例添加到 JFrame 或其任何子容器中。

关于java - 如何在 Java 中的 JFrame 上的 JPanel 上绘画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578777/

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