Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这个代码没有显示任何椭圆_Java_Swing - Fatal编程技术网

Java 为什么这个代码没有显示任何椭圆

Java 为什么这个代码没有显示任何椭圆,java,swing,Java,Swing,我试图添加一个椭圆形的框架和框架显示后,执行程序没有显示在它。背景色甚至会出现。只有椭圆形不可见。请给我一些建议 import javax.swing.*; import java.awt.Color; import java.awt.Graphics; @SuppressWarnings("serial") public class Example1 extends JFrame{ Example1() { JFrame jp=new JFrame(

我试图添加一个椭圆形的框架和框架显示后,执行程序没有显示在它。背景色甚至会出现。只有椭圆形不可见。请给我一些建议

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

@SuppressWarnings("serial")
public class Example1 extends JFrame{


    Example1()
    {
        JFrame jp=new JFrame("spot");

         jp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        jp.setVisible(true);
        jp.setSize(400,400);

    }

  public void paint(Graphics g)
  {
      super.paint(g);
      g.setColor(Color.BLACK);

      g.fillOval(100,50,40,50);

  }

  public static void main(String...args)
{

    @SuppressWarnings("unused")
    Example1 obj = new Example1();


}
}

首先绘制,然后将颜色设置为红色。你认为这会改变你之前画的椭圆形的颜色吗

喷漆步骤:

  • 设置颜色

  • 因为您正在扩展JComponent中绘制椭圆,而您在任何地方都没有使用它

    您只需使用JFrame,设置其背景色并显示它。您应该在JFrame的内容窗格中添加扩展JComponent

    编辑

    您正在扩展JFrame以覆盖paint()方法,好的(但这不是正确的方式)。但您并没有使用它来显示GUI。您正在Example1的构造函数中创建一些不同的JFrame,并用它显示GUI

    您应该显示扩展的JFrame。像这样:

        Example1 obj = new Example1();
        // Example1 extends JFrame, and overrides paint() method to display oval.
        // so display this Example1 frame, not creating some different JFrame.
        obj.setSize(400,400);
        obj.setVisible(true);
    

    首先尝试设置颜色
    g.setColor(color.RED)然后填充椭圆
    g.fillOval(100,50,40,50),无需绘制椭圆,填充即可。首先,查看问题的标题,纠正拼写错误。顺便问一下,您是否忘记将组件添加到框架中(
    jp
    )?也许
    jp.在构造函数中添加(这个)
    @User251414…我没有使用任何组件。。!!请看代码。我正在扩展JFrame。但是仍然没有积极的结果。帮助很大。!thanx@用户2935743,
    或者您应该在JFrame的重写的受保护的void paintComponent(Graphics g){}方法中绘制椭圆形
    -JFrame中没有paintComponent()方法,您也不应该重写JFrame中的paint()
    您应该在JFrame的内容窗格中添加扩展JComponent。
    -这是正确的方法。阅读Swing教程中的部分以获取更多信息和示例。是的,因为您正在创建并显示一个新的JFrame,而不是Example1类。让Example1扩展JPanel并将jp.setContentPane(this)放入构造函数中。然后浏览Swing教程,以便学习如何正确编写Swing。如果要向框架添加任何内容,我可以简单地使用getContentPane()而不是扩展JPanel。为什么不一定要扩展JPanel?如果扩展JPanel,可以将类设置为内容窗格。现在你正在创建2个JFrame并做各种不必要的废话。你为什么不先看一下教程呢?感谢所有的责骂者。。!!但光是读书也帮不了我。但thanx会再经历一次。