【发布时间】:2016-05-25 23:27:36
【问题描述】:
我首先要说我几乎可以保证这个问题将是一个副本,但我找不到任何其他适合我需要/适用于我的程序的答案。我需要在JPanel 上画画,但我似乎无法画出我需要画出来的线条。
JFrame drawF = new JFrame("Simulator");
JPanel simPanel = new JPanel();
drawF.setVisible(true);
drawF.setSize(1000,650);
drawF.add(simPanel);
drawF.pack();
simPanel.setLayout(null);
simPanel.setSize(1000,650);
simPanel.setVisible(true);
simPanel.setBackground(Color.BLACK);
//add drawing surface
//start drawing
simPanel.add(new JComponent()
{
public void paint(Graphics g)
{
g.setColor(Color.RED);
int xLast,yLast;
for(int i=0;i < 5000000; i++) // five million
{
double dX = (Math.E*Math.exp(-numd1*i)*Math.sin(i*numf1+nump1))+(Math.E*Math.exp(-numd2*i)*Math.sin(i*numf2*nump2));
double dY = (Math.E*Math.exp(-numd3*i)*Math.sin(i*numf3+nump3))+(Math.E*Math.exp(-numd4*i)*Math.sin(i*numf4*nump4));
int drawX = (int)dX;
int drawY = (int)dY;
if (i==0)
{
xLast = 0;
yLast = 0;
g.drawLine(xLast,yLast,drawX,drawY);
simPanel.revalidate();
simPanel.repaint();
}
else
{
xLast = drawX;
yLast = drawY;
g.drawLine(xLast,yLast,drawX,drawY);
simPanel.revalidate();
simPanel.repaint();
}
}
}
});
repaint();
将JComponent 添加到我的JPanel 有什么问题吗?
【问题讨论】:
-
你想画什么方程?为什么你在计算中使用
Math.E并乘以相同的数字(欧拉常数,e)提高到某个幂? -
对不起,我一直很忙。我正在模拟一个和声仪。
-
哦,顺便说一下,这(显然)只是一个更大的程序的一部分。
-
如果它是一个更大的 GUI,那么您将不希望在它自己的 JFrame 中显示它。如果需要进入子窗口,则将其显示在对话框窗口中,例如在 JDialog 中。
-
只是为了好奇拥有多个 JFrame 会发生什么?帧速率降低?