Java 如何在同一文件的其他类中调用方法?
我有一个GUI类和一个MouseClickListener。 监听器工作正常,我在面板上添加了一个新的鼠标点击对象-我现在可以打印出坐标了。 但是我想在单击时更改一些内容,所以我需要访问GUI类,但我找不到方法 我发现了一些类似的问题,但他们都缺少一些东西Java 如何在同一文件的其他类中调用方法?,java,Java,我有一个GUI类和一个MouseClickListener。 监听器工作正常,我在面板上添加了一个新的鼠标点击对象-我现在可以打印出坐标了。 但是我想在单击时更改一些内容,所以我需要访问GUI类,但我找不到方法 我发现了一些类似的问题,但他们都缺少一些东西 public JPanel listener; boolean[][] farm; Rectangle[][] rects; int fSize; int wSize; int hCorr = 23; Color dead; Color a
public JPanel listener;
boolean[][] farm;
Rectangle[][] rects;
int fSize;
int wSize;
int hCorr = 23;
Color dead;
Color alive;
public GUIdiy(int fSize, int wSize, Color dead, Color alive){
this.fSize = fSize;
this.wSize = wSize;
this.dead = dead;
this.alive = alive;
listener = new JPanel();
add(listener);
this.farm = new boolean[fSize][fSize];
rects = new Rectangle[fSize][fSize];
setTitle("");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(wSize, wSize);
setBackground(Color.LIGHT_GRAY);
setLocationRelativeTo(null);
setVisible(true);
MouseClick click = new MouseClick();
listener.addMouseListener(click);
}
public void paint(Graphics g){
int width = getSize().width;
int height = getSize().height;
fillFalse(fSize, farm);
int spacing = 1;
int x = 0;
int y = hCorr;
//int rSize = ((width < (height - hCorr)) ? width : (height- hCorr)) / this.farmSize;
int rSize = ((width < (height - hCorr)) ? width : (height- hCorr)) / fSize;
for (int i = 0; i < fSize; i++){
for (int k = 0; k < fSize; k++){
if (farm[i][k]){
g.setColor(alive);
} else {
g.setColor(dead);
}
rects[i][k] = new Rectangle(x, y, rSize - spacing, rSize - spacing);
//Rectangle a = new Rectangle(x, y, rSize, rSize);
paintComponent(g, rects[i][k], g.getColor());
x += rSize;
}
y += rSize;
x = 0;
}
}
protected void paintComponent(Graphics g, Rectangle rect, Color color) {
//super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(color);
g2.fill(rect);
}
public void fillFalse(int fSize, boolean [][] farm){
for (int i = 0; i < fSize; i++){
for (int j = 0; j < fSize; j++){
farm[i][j] = false;
}
}
}
class MouseClick implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
这是我的全部课程。我知道有一个捕鼠器,但我先用这种方法试过。单击鼠标时,我想访问GUIdiy类的变量。详细说明:我有这个布尔数组,并根据它的值绘制不同颜色的矩形。如果单击鼠标,我将根据fSize计算矩形的行和列,并反转数组中的布尔值。当它被重新油漆,然后显示另一种颜色
这比我想做的容易吗?我对JFrame完全陌生,它与迄今为止我用java所做的一切都不一样假设您有两个类GUI和MouseClickListener
您希望在MouseClickListener中访问GUI的方法
您可以做的一件事是扩展MouseClickListener,即MouseClickListener扩展GUI
您可以将GUI类设置为抽象类
若GUI只有需要重写的方法,那个么将其设置为接口
您还可以使GUI类方法成为静态的
四者之间的实际实施将取决于您的具体要求。如果您可以显示一些迄今为止您一直在使用的代码,那就更好了。您可以向我们显示您的代码,以及您作为一个应用程序所做的尝试吗?您可以将该方法设置为静态,这样您就可以通过其类名访问该方法。这是家庭作业吗??顺便说一句,这里还有一些建议:谢谢你,我更新了我的帖子,也许你有其他想法-但我会试试