如何在JPanel内部绘制

时间:2013-10-08 15:26:53

标签: java swing jpanel paint

我在Jframe中有一个JPanel。我想在JPanel中使用paint(Graphics g)方法绘制一条线。但它没有用。请有人在这个问题上帮助我。这是代码。 提前谢谢大家。

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.SwingUtilities;

public class JavaGraph {

JPanel myPanel;

public JPanel createPanel()
{

    myPanel=new JPanel();
    myPanel.setLayout(null);
    //myPanel.setBackground(Color.black);
    return myPanel;

}
public static void  display()
{
    JFrame frame=new JFrame();
    JavaGraph j=new JavaGraph();
    frame.add(j.createPanel());
    frame.setVisible(true);
    frame.setSize(400,400);
    }

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable()
            {
        public void run()
        {
            display();
        }
            });
}

}

1 个答案:

答案 0 :(得分:1)

你会

  • 覆盖getPreferredSize的{​​{1}},否则JPanel仅使用Java2D返回零JPanel

  • 覆盖Dimension,详见Oracle tutorial

  • 阅读Oracle教程Inintial Thread

你不会

  • paintComponent()使用Null Layout

  • myPanel.setLayout(null);代表frame.setSize(400,400);JFrame等,因为JPanelJComponents)被指定为向其返回正确的override getPreferredSize contianer,Dimension计算,确定容器的适当大小(以像素为单位)

  • 在调用JFrame.pack(before JFrame.setVisible)之后调用任何代码来设置,更改或初始化Swing GUI