Java图形没有出现
根据我以前的经验,我知道扩展JFrame和JPanel是不好的。所以我决定放弃这个想法,学习如何编写框架及其组件(顺便说一句,我还在学习)。但是,即使我已经按了按钮,我似乎无法显示我的图表,我现在已经不知所措了 下面是我的第一堂课,它已经建立并声明了所有的小组(如果术语不正确,请原谅我) 下面这几行是我的另一门课“DrawGraph”。我不太擅长编码,但我肯定我没有正确调用该类,只是不知道如何调用Java图形没有出现,java,swing,class,Java,Swing,Class,根据我以前的经验,我知道扩展JFrame和JPanel是不好的。所以我决定放弃这个想法,学习如何编写框架及其组件(顺便说一句,我还在学习)。但是,即使我已经按了按钮,我似乎无法显示我的图表,我现在已经不知所措了 下面是我的第一堂课,它已经建立并声明了所有的小组(如果术语不正确,请原谅我) 下面这几行是我的另一门课“DrawGraph”。我不太擅长编码,但我肯定我没有正确调用该类,只是不知道如何调用 class DrawGraph { DrawGraph drawgrap
class DrawGraph
{
DrawGraph drawgraph = new DrawGraph();
static boolean lukis = true;
int oldY = 0;
double degToRad (int deg){
return ((2*Math.PI)/360.0) * deg;
}
int scale (int i, int width){
return (int) ((i/(double)width)*720.0);}
public void paintGraph(Graphics g){
g.drawLine(0, 100, 400, 100);//X-axis
g.drawLine(200, 0, 200, 200);//Y-axis
g.drawLine(400, 100, 390, 90);//arrow pointing rightwards
g.drawLine(400, 100, 390, 110);//arrow pointing rightwards
g.drawLine(200, 0, 190, 10);//arrow pointing upwards
g.drawLine(200, 0, 210, 10);//arrow pointing upwards
g.drawString("X", 400, 80);//draw 'X' label
g.drawString("Y", 220, 10);//draw 'Y' label
g.drawString("\u03C0/2", 240, 120);//draw ' 1/2 Pi' label
g.drawString("\u03C0", 290, 120);//draw 'Pi' label
g.drawString("2\u03C0", 400, 120);//draw ' 2 Pi' label
g.drawString("3\u03C0/2", 340, 120);//draw ' 3/2 Pi' label
g.drawString("-\u03C0/2", 140, 120);//draw 'negative 1/2 Pi' label
g.drawString("-\u03C0", 87, 120);//draw 'negative Pi' label
g.drawString("-2\u03C0", 0, 120);//draw 'negative 2 Pi' label
g.drawString("-3\u03C0/2", 30, 120);//draw ' 3/2 Pi' label
g.drawString("0", 205, 110);//draw '0' label
g.drawString("0.77", 175, 50);//draw '0.77' label for half Pi
g.drawString("1", 175, 10);//draw '1' label for a Pi
g.drawString("-0.77", 170, 150);//draw '0.77' label for half Pi
g.drawString("-1", 185, 200);//draw '1' label for a Pi
int width = 400;
int height = 200;
for (int i=0; i<width; i++){
int y = (int) Math.round((-Math.sin(degToRad(scale(i,width)))+1)*height/2.0);
if (lukis && i>0){
g.drawLine(i-1, oldY, i, y);
}
else {
g.drawLine(i, y, i, y);
}
oldY = y;
}
}
}
类绘图
{
DrawGraph DrawGraph=新的DrawGraph();
静态布尔值lukis=true;
int oldY=0;
双除雾器(内部度){
返回((2*Math.PI)/360.0)*度;
}
整数比例(整数i,整数宽度){
返回值(int)((i/(双)宽度)*720.0);}
公共空间画图(图g){
g、 抽绳(0,100,400,100);//X轴
g、 抽绳(200,0,200,200);//Y轴
g、 抽绳(40010039090);//向右箭头
g、 抽绳(400100390110);//向右箭头
g、 抽绳(200,0,190,10);//指向上方的箭头
g、 抽绳(200,0,210,10);//指向上方的箭头
g、 抽绳(“X”,400,80);//画“X”标签
g、 抽绳(“Y”,220,10);//画“Y”标签
g、 drawString(“\u03C0/2”,240,120);//绘制“1/2 Pi”标签
g、 drawString(“\u03C0”,290,120);//绘制'Pi'标签
g、 drawString(“2\u03C0”,400120);//绘制'2pi'标签
g、 抽绳(“3\u03C0/2”,340,120);//绘制“3/2 Pi”标签
g、 drawString(“-\u03C0/2”,140,120);//绘制“负1/2π”标签
g、 drawString(“-\u03C0”,87120);//绘制“负Pi”标签
g、 drawString(“-2\u03C0”,0,120);//绘制“负2π”标签
g、 抽绳(“-3\u03C0/2”,30,120);//绘制“3/2 Pi”标签
g、 抽绳(“0”,205,110);//绘制“0”标签
g、 抽绳(“0.77”,175,50);//为半圆周率绘制“0.77”标签
g、 drawString(“1”,175,10);//为Pi绘制“1”标签
g、 抽绳(“-0.77”,170150);//为半圆周率绘制“0.77”标签
g、 drawString(“-1”,185200);//为Pi绘制“1”标签
整数宽度=400;
整数高度=200;
对于(int i=0;i0){
g、 抽绳(i-1,旧,i,y);
}
否则{
g、 抽绳(i,y,i,y);
}
oldY=y;
}
}
}
编辑:我想我已经清理了足够多的代码缩进,如果我错了,请纠正我。是的,我犯了一些不专业的错误,所以请原谅我
我了解到扩展JFrame和JPanel是不好的
但是如果您需要在GUI中绘图,通常需要扩展JPanel,这正是您在这里应该做的。例如,使用图形对象绘制的代码应该位于JPanel的受保护的void paintComponent(Graphics g)
方法的内部。因此,您的DrawGraph类应该扩展JPanel,它应该覆盖paintComponent,并在顶部添加一个@override
注释,并且应该调用super方法:
public class DrawGraph extends JPanel {
// .... variables, constructor, methods here...
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// your painting code here
}
关于,
guiframe.getContentPane().add(DrawGraph.paintComponent());
我不知道你想在这里做什么,但你知道,这是错误的,删除那一行,以后甚至不要做类似的事情。看起来您几乎是在尝试直接调用组件的paintComponent方法,这是您几乎永远不想做的事情
关于:
下面这几行是我的另一门课“DrawGraph”。我不太擅长编码,但我确定我没有正确调用该类,只是不知道如何
但这正是教程的目的。如果您尚未阅读,请立即阅读:
- :Swing图形的入门教程
- :Swing图形高级教程
guiframe.getContentPane().add(DrawGraph.paintComponent());