java - Paint 方法向 Java GUI 添加白色层

标签 java swing user-interface

此代码应创建一个黑色窗口,然后在其上添加一条直线和多边形。

public class gui extends JFrame {

 JPanel pane = new JPanel();
 gui(String title){
    super(title);
    setBounds(100,100,500,500);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container con = this.getContentPane();
    pane.setBackground(new Color(0,0,0));
    con.add(pane);
    setVisible(true);
 }

 public void paint(Graphics g){

    g.drawLine(100, 100, 400, 400);

    Point p1 = new Point(400, 100);
    Point p2 = new Point(100, 300);
    Point p3 = new Point(200, 400);

    int[] xs = { p1.x, p2.x, p3.x };
    int[] ys = { p1.y, p2.y, p3.y };
    Polygon triangle = new Polygon(xs, ys, xs.length);

    g.setColor(new Color(250,0,0));
    g.fillPolygon(triangle);
 }
}

当我删除 paint() 方法时,会按照预期创建一个纯黑色 GUI。

但是,当 paint() 方法到位时,您将在白色背景上获得线条和多边形,而不是黑色背景。

怎样才能让黑色背景显示出来?

最佳答案

您需要调用

super.paint(g);

在你的paint方法中。

在 Swing 中,首选方法是重写 paintComponent,尽管由于 JFrame 实际上不是 JComponent,因此不会调用此方法。要使用此方法,可以将功能移至自定义 JComponent

关于java - Paint 方法向 Java GUI 添加白色层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875351/

相关文章:

java - 搜索文本文件

java - 为什么 PermSize 和 MaxPermSize 的设置值和实际值不同?

java - JPanel 在继续之前不会等待用户输入

.net - WPF 中 UI 虚拟化的资源和指南

linux - 从哪里开始学习如何基于脚本构建 Linux GUI 应用程序?

java - Symfony2 Assetic yuicompressor 未知错误

java - JVM - 弱引用是否在次要 GC 中收集?

java - 允许 "Enter"键按下提交按钮,而不是仅使用 MouseClick

java - 如何让 GUI 按钮正确响应?

python - 两件事 : 1) Printing errors/tracebacks/exceptions to GUI and 2) The best way to utilize a script within a script