2013-10-08 53 views
0

我在Jframe里面有一个JPanel。我想在JPanel里面用paint(Graphics g)方法画一条线。但它不起作用。请有人帮我解决这个问题。这是代码。 谢谢大家提前。如何在JPanel里面绘制

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

覆盖'的paintComponent()'代替后。 –

回答

1

你会

  • 覆盖getPreferredSizeJPanel,用的Java2D否则JPanel才返回零Dimension

  • 覆盖paintComponent(),更看到Oracle tutorial

  • 阅读甲骨文教程Inintial Thread

你不会

  • myPanel.setLayout(null);使用空布局

  • frame.setSize(400,400);JFrameJPanel等,因为JComponentsoverride getPreferredSize)被指定返回适当的Dimension NER,JFrame.pack(before JFrame.setVisible)来计算,以像素为单位

  • 确定用于容器(一个或多个)适当的大小调用任何代码来设置,改变或intialize摇摆GUI,frame.setVisible(true);称为

+0

我是新来的java。你可以给一个示例代码吗? – Sam

+0

不,这里是一堆代码示例,搜索标签[java + swing + paintcomponent](http://stackoverflow.com/questions/tagged/java+swing+paintcomponent?sort=frequent&pageSize=15)特别是在答案MadProgrammer或气垫船充满了鳗鱼 – mKorbel