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
和这个资源(它也在链接的问题中)
我需要有关此代码的帮助。我的 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
和这个资源(它也在链接的问题中)