Java drawLine()不起作用

时间:2015-09-11 14:54:45

标签: java methods graphics line

我需要有关此代码的帮助。我的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();

}

}

2 个答案:

答案 0 :(得分:2)

使用来自Graphics的{​​{1}}对象进行绘图并无法使用(请参阅以下链接了解"为什么")。你必须覆盖方法" paintComponent"对于JPanel,其中输入参数是panel.getGraphics()对象

(另请注意 - 标准方法命名的首字母小写,因此Graphics应为ShowView()

showView()

查看以下堆栈溢出问题

Drawing an object using getGraphics() without extending JFrame

这个资源(它也在链接的问题中)

http://docs.oracle.com/javase/tutorial/uiswing/painting/

答案 1 :(得分:0)

您应该将面板设置为ShowView方法中的最后一项。

public void ShowView()
{
    //your code
    janela.setVisible(true);
}