如何在不同的 class 中使用来自 class 的方法?
How can I use a Method from a class in a different class?
我已经试了几个小时了,但没有用。
我正在尝试在 Game.java class 中使用 paintComponent 方法,但我不确定具体如何操作。
我试过直接调用该函数,但当然它不起作用,因为它需要 return 一些东西。
我需要用到的方法在这个"Circles.java" class:
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方法的class(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
首先应该是new Circle ()
而不是new(Circle())
第二件事,因为 new
和 Circle()
都在不同的括号中,java 将 Circle()
视为 Class 游戏的方法,因此您会遇到错误就这样。
您在这里 frame.add(new (Circles()));
在您的 main 方法中尝试做的是访问一个仅在您的 LoadUI()
方法中可用的变量。
为了能够访问该变量,您需要在 LoadUI()
方法之外声明它,如下所示:
...
public class Game extends JFrame {
JFrame frame;
public static void LoadUI()....
其次,正如Manish Jaiswal上面提到的,你的括号位置是错误的,这意味着你初始化Circles
对象的方式是错误的。
要使此代码正常工作,您可以在 main 方法中执行如下操作:
LoadGUI();
frame.add(new Circles());
尽管我建议为您的 GUI/JFrame 使用单独的 class / 对象,而不是将 LoadUI()
方法设为静态。
您还可以以更易于阅读的方式缩进您的代码,只是为了让您自己也更轻松:)
我已经试了几个小时了,但没有用。
我正在尝试在 Game.java class 中使用 paintComponent 方法,但我不确定具体如何操作。
我试过直接调用该函数,但当然它不起作用,因为它需要 return 一些东西。
我需要用到的方法在这个"Circles.java" class:
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方法的class(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
首先应该是new Circle ()
而不是new(Circle())
第二件事,因为 new
和 Circle()
都在不同的括号中,java 将 Circle()
视为 Class 游戏的方法,因此您会遇到错误就这样。
您在这里 frame.add(new (Circles()));
在您的 main 方法中尝试做的是访问一个仅在您的 LoadUI()
方法中可用的变量。
为了能够访问该变量,您需要在 LoadUI()
方法之外声明它,如下所示:
...
public class Game extends JFrame {
JFrame frame;
public static void LoadUI()....
其次,正如Manish Jaiswal上面提到的,你的括号位置是错误的,这意味着你初始化Circles
对象的方式是错误的。
要使此代码正常工作,您可以在 main 方法中执行如下操作:
LoadGUI();
frame.add(new Circles());
尽管我建议为您的 GUI/JFrame 使用单独的 class / 对象,而不是将 LoadUI()
方法设为静态。
您还可以以更易于阅读的方式缩进您的代码,只是为了让您自己也更轻松:)