我需要有关此代码的帮助。我的g.drawLine(0,0,300,300)无效。它一直工作到星期一,我不知道出了什么问题。在使用plota_pixel()方法之前,我使用g.drawLine(0,0,300,300)进行测试。 g.drawLine(0,0,300,300)在Jpanel面板上打印从(0,0)到(300,300)的一行
MainView类:
package alexandre.VIEW;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MainView {
private JFrame janela;
public JPanel panel;
public MainView()
{
janela = new JFrame("Exercicio 15/09");
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
this.ShowView();
}
public void ShowView()
{
janela.pack();
janela.setSize(750,600);
janela.setLayout(null);
janela.add(panel);
panel.setBounds(0,0,710,600);
janela.setVisible(true);
System.out.println("OIdsazxc");
Graphics g = panel.getGraphics();
g.setColor(Color.BLACK);
g.drawLine(0,0,300,300);
}
public void plota_pixel(int x, int y)
{
Graphics g = panel.getGraphics();
g.drawLine(x, y, x, y);
}
}
入门级:
package alexandre.CONTROL;
import alexandre.VIEW.MainView;
public class Starter {
public static void main(String[] args) {
MainView view = new MainView();
view.ShowView();
}
}
答案 0 :(得分:2)
使用来自Graphics
的{{1}}对象进行绘图并无法使用(请参阅以下链接了解"为什么")。你必须覆盖方法" paintComponent"对于JPanel,其中输入参数是panel.getGraphics()
对象
(另请注意 - 标准方法命名的首字母小写,因此Graphics
应为ShowView()
)
showView()
查看以下堆栈溢出问题
Drawing an object using getGraphics() without extending JFrame
这个资源(它也在链接的问题中)
答案 1 :(得分:0)
您应该将面板设置为ShowView
方法中的最后一项。
public void ShowView()
{
//your code
janela.setVisible(true);
}