只需单击Java按钮即可显示一个圆圈

只需单击Java按钮即可显示一个圆圈,java,graphics,draw,jbutton,geometry,Java,Graphics,Draw,Jbutton,Geometry,我目前正在学习java,我理解除了图形以外的概念,作为一名程序员,图形对我来说是全新的。坦率地说,这使我的生活陷入困境。理论上,我的例子应该使按下按钮时出现一个圆圈 使用print方法进行调试时,我一直发现按钮正确地调用了所有方法,并创建了一个新的圆圈c对象,但在newNode()中。drawCircle()repaint()从未被调用,因此新对象未被绘制。为什么会这样,谁能帮我把这个该死的圆圈弄出来!!有些人可能会注意到我使用了这个例子来尝试帮助解决这个问题 这是一个网络绘图程序的开始,我认为

我目前正在学习java,我理解除了图形以外的概念,作为一名程序员,图形对我来说是全新的。坦率地说,这使我的生活陷入困境。理论上,我的例子应该使按下按钮时出现一个圆圈

使用print方法进行调试时,我一直发现按钮正确地调用了所有方法,并创建了一个新的圆圈c对象,但在newNode()中。drawCircle()repaint()从未被调用,因此新对象未被绘制。为什么会这样,谁能帮我把这个该死的圆圈弄出来!!有些人可能会注意到我使用了这个例子来尝试帮助解决这个问题

这是一个网络绘图程序的开始,我认为这很容易…除了在创建时显示节点…即圆

这段代码现在可以工作了,所以我希望它可以帮助有类似问题的人,因为我知道这是一个常见的java赋值:)

import java.awt.*;
导入java.awt.geom.*;
导入javax.swing.*;
导入java.awt.event.*;
导入java.util.*;
///////////////////////////////////////////////////////////////////////
公共类网络作者
{
公共静态void main(字符串[]args){
最终JFrame=新JFrame(“网络图示器”);
frame.getContentPane().add(new NewNode());//删除行
final NewNode NewNode=new NewNode();
/////回答后的修订,添加,frame.getContentPane().add(newNode);(删除上面的frame.getContent)
JPanel buttonPanel=新的JPanel();
JButton按钮=新JButton(“新节点”);
addActionListener(新建ActionListener(){
已执行的公共无效操作(操作事件e){
System.out.println(“按下按钮”);
newNode.drawCircle();
}
});
按钮面板。添加(按钮);
框架。添加(按钮面板,边框布局。南);
框架。设置尺寸(600600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
//////////////////////////////////////////////////////////////////////
类NewNode扩展了JComponent
{
public ArrayList_circles=new ArrayList();
公共组件(图形g){
g、 setColor(Color.WHITE);
g、 fillRect(0,060600);
系统输出打印(“重绘”);
对于(圆c:_圆){
System.out.println(“每个C”);
g、 设置颜色(颜色为黑色);
c、 抽签(g);
}
}
公众假期{
System.out.println(“drawCircle实现”);
圆圈c=新圆圈(100100100100);
_加上(c);
重新油漆();
}
}
/////////////////////////////////////////////////////////////////////
班级圈子
{
int x,y,z,a;
圆(整数x,整数y,整数z,整数a){
this.x=x;
this.y=\u y;
this.z=z;
这个.a=\u a;
}
公共空间绘制(图g){
System.out.println(“在绘图方法中调用”);
g、 设置颜色(颜色为黑色);
g、 椭圆(x,y,z,a);
}
}

您正在使用两个不同的
NewNode

frame.getContentPane().add(new NewNode());
final NewNode newNode = new NewNode();
在操作侦听器中,您正在对未添加到内容窗格的newNode调用
newNode.drawCircle()


顺便说一句,你有没有注意到你有两个
Circle
类,第一个类会做一些奇怪的事情(比如在无法访问的_circles中添加一个新的Circle)?

干杯!!这一周一直困扰着我,真不敢相信我错过了简单的前几行。oppps这是我的错,一定是一个坏的复制和粘贴我的一些尝试来修复它!,很抱歉造成混淆,已编辑:)。
frame.getContentPane().add(new NewNode());
final NewNode newNode = new NewNode();