gpt4 book ai didi

java - 无法在 Java 中为 JPanel 设置颜色

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:07 24 4
gpt4 key购买 nike

我刚刚开始使用 java 中的图形,但我已经陷入困境。我尝试将 JPanel 的颜色设置为红色,但似乎没有任何效果!非常感谢任何帮助。

JFrame 类:

import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Color;


public class redBoxFrame{

public static void main(String[]args){
JFrame f = new JFrame();
f.setSize(400, 200);
f.setTitle("A red box");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new redBoxPanel();
p.setBackground(Color.RED);
f.add(p);
f.setVisible(true);
}

}

JPanel 类:

   import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.Color;

public class redBoxPanel extends JPanel {

public void paintComponent(Graphics g){
g.fillRect(0, 0, 100, 100);
g.setColor(Color.RED);

}
}

正如您所看到的,我都尝试在 JFrame 类和 JPanel 类中声明颜色,但它们似乎都不起作用。谢谢!

最佳答案

这里的每个人似乎都忽略了这样一个事实:颜色应该绘制之前设置。

出于演示目的,我会将主背景设置为蓝色。

public static void main(String[] args) {
//...
JPanel p = new redBoxPanel();
// BLUE bg. This covers the whole panel.
p.setBackground(Color.BLUE);
//...
}

现在是红色框!

public static class redBoxPanel extends JPanel {
@Override public void paintComponent(Graphics g) {
// You need to call the superclass' paintComponent() so that the
// setBackground() you called in main() is painted.
super.paintComponent(g);

// You need to set the colour BEFORE drawing your rect
g.setColor(Color.RED);

// Now that we have a colour, perform the drawing
g.fillRect(0, 0, 100, 100);

// More, for fun
g.setColor(Color.GREEN);
g.drawLine(0, 0, 100, 100);
}
}

关于java - 无法在 Java 中为 JPanel 设置颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54875629/

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