【问题标题】:Java drawLine() not workingJava drawLine()不起作用
【发布时间】:2015-12-08 04:29:52
【问题描述】:

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

}

}

【问题讨论】:

  • 我已经尝试设置 panel.setBounds(0,0,710,600);在将其添加到 JFrame 之前
  • 您好,感谢您的回答,但我仍然得到一个空的灰色面板。

标签: java methods graphics line


【解决方案1】:

使用来自panel.getGraphics()Graphics 对象并绘图不起作用(有关“为什么”,请参见下面的链接)。您必须为 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/

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 2017-08-26
      • 2016-08-28
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多