Java drawLine() 不工作

Java drawLine() not working

我需要有关此代码的帮助。我的 g.drawLine(0,0,300,300) 不工作。它一直工作到星期一,我不知道出了什么问题。我使用 g.drawLine(0,0,300,300) 以便在使用 plota_pixel() 方法之前进行测试。 g.drawLine(0,0,300,300) 应该在 Jpanel 面板上打印从 (0,0) 到 (300,300) 的一行

主视图Class:

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);

}

}

初学者 Class:

package alexandre.CONTROL;

import alexandre.VIEW.MainView;


public class Starter {

public static void main(String[] args) {

    MainView view = new MainView();     
    view.ShowView();

}

}

您应该将面板设置为可见作为 ShowView 方法中的最后一件事。

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

无法使用 panel.getGraphics() 中的 Graphics 对象进行绘图(请参阅下面的 "why" 链接)。您必须重写 JPanel 的方法 "paintComponent",其中输入参数是 Graphics 对象

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

public MainView()
{
    janela = new JFrame("Exercicio 15/09");
    janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    panel = new JPanel() {
       @Override
       public void paintComponent(Graphics g) {
          super.paintComponent(g);
           g.setColor(Color.BLACK);                   
           g.drawLine(0,0,300,300);
       }
    };
    this.showView();
}


public void showView() {
    janela.pack();
    janela.setSize(750, 600);
    janela.setLayout(null);
    janela.add(panel);
    panel.setBounds(0, 0, 710, 600);
    panel.setVisible(true);

    janela.repaint();
}

查看下面的堆栈溢出问题

Drawing an object using getGraphics() without extending JFrame

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

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