如何在不同的类中使用类的方法?

时间:2017-10-14 18:11:23

标签: java class methods paintcomponent

我现在已经尝试了好几个小时但没有用。

我试图在我的Game.java类中使用paintComponent方法,但我不确定如何做到这一点。

我尝试过直接调用该函数,但当然它不起作用,因为它需要返回一些东西。

我需要使用的方法是在" Circles.java"类:

package testgame;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.Ellipse2D;
import javax.swing.JPanel;
import javax.swing.JPanel;

public class Circles extends JPanel {

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Bubbles(g); }

    private void Bubbles(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        RenderingHints rh
                = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        rh.put(RenderingHints.KEY_RENDERING, 
                RenderingHints.VALUE_RENDER_QUALITY);
        g2d.setRenderingHints(rh);
        int x, y, size;
        x = (int) (Math.random() * 500) + 15;
        y = (int) (Math.random() * 450) + 15;
        size = (int) (Math.random() * 30) + 10;
        g2d.setColor(Color.green);
        g2d.drawOval(x, y, size, size); } 
}

这是需要paintComponent方法(Game.java)的类:

package testgame;

import java.awt.EventQueue;
import javax.swing.JFrame;

public class Game extends JFrame {

    public static void LoadUI() {
        JFrame frame = new JFrame("Just a test!");
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
        frame.setSize(550, 500);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true); }

public static void main(String[] args) {
     frame.add(new (Circles()));  }
}

我得到的错误是:

frame.add(new (Circles()));

错误是:

identifier expected

cannot find symbol
symbol:  method Circles()
location: class Game

cannot find symbol
symbol:  variable frame
location: class Game

2 个答案:

答案 0 :(得分:0)

首先,它应该是new Circle ()而不是 new(Circle())

第二件事newCircle()都在不同的括号中,java将Circle()视为类游戏的方法,因此您会收到类似的错误。

答案 1 :(得分:0)

您在主要方法中尝试执行的操作frame.add(new (Circles()));是访问仅在LoadUI()方法中可用的变量。

为了能够访问该变量,您需要在LoadUI()方法之外声明它,如下所示:

    ...
    public class Game extends JFrame {

    JFrame frame;

    public static void LoadUI()....

其次,正如上面提到的Manish Jaiswal,括号的放置是错误的,这意味着初始化Circles对象的方式是错误的。

要使此代码有效,您可以在main方法中执行以下操作:

LoadGUI();
frame.add(new Circles());

虽然我建议为GUI / JFrame使用单独的类/对象,而不是使LoadUI()方法静态。 您也可以用更容易阅读的方式缩进代码,只是为了让自己更容易:)