由于我是新的,我无法发布超过两个链接,但这是来自reddit.com/r/learnprogramming的x-post,仅供完整披露。
我基本上只是粘贴我在这里所说的话。如果您能提供帮助,感谢您的帮助。
我正在写一些图形应用程序。我目前只能将sin(x)图形化,但这不是这个问题的重点。我无法抽到我的主面板。 Here是目前的样子。
我的Window.java类中有一个重写的绘制函数,它绘制了sin(x)函数和轴,但是当我创建一个扩展JPanel()的内部类时,它将不再绘制。
然后我尝试制作一个单独的文件,但它也没有绘制任何内容。
有什么可以阻止它画画? Here are all my files in question.
编辑:有问题的代码:
GraphDraw.java:
//import stuff
Public class GraphDraw extends JPanel {
SinX sinx = new SinX();
GraphPanel p = new GraphPanel();
@Override
public void paintComponent(Graphics gc) {
super.paintComponent(gc);
Graphics2D g = gc;
p.paintComponent(g);
sinx.paint(g);
}
}
在Window.java中,我初始化GraphDraw并将其添加到我的主面板,该主面板位于图片中的按钮下方和x / y最小/最大标签上方。
GraphDraw drawer = new GraphDraw();
/*
GUI code
*/
mainPanel.add(drawer);
SinX.java
//import stuff
public class SinX extends Component {
public void paint(Graphics g) {
g.setColor(Color.red);
for(double x=-400;x<=400;x=x+0.5) {
double y = 50 * sin(x*((Math.PI)/180));
int Y = (int)y;
int X = (int)x;
g.drawLine(400+X,300-Y,400+X,300-Y);
}
}
}
答案 0 :(得分:0)
首先,在其他任何事情之前,执行以下操作:
从那里我会尝试在所有对象上调用setVisible(true);
。如果您从教程中获取此代码,请停止并使用其他教程。在开始创建用户界面之前,您需要了解swing和AWT库的工作方式。没有人再使用AWT,因为Swing要好得多。出于原因,请查看以下页面。如果你懒得这么做,那是因为它更优化,更强大。