2014-09-18 61 views
0

我是新来的java swing。我试图通过layeredPane添加由paintComponent()方法在我的框架形成的绘图,但它不是在JFrame在分层平面java中添加绘图

显示,如果我把代码frame.getContentPane().add(drawing)和评论分层部分代码工作然而..

我做错了什么?

这里是代码: 框架类

public class FrameTest extends JFrame { 

    static JFrame frame= new JFrame("Frame"); 


    public static void main(String[] args) { 
     FrameTest test= new FrameTest(); 
    } 

    public FrameTest(){ 
     this.openfrane(); 
     frame.setVisible(true); 
     frame.setLocationRelativeTo(null); 
    } 

    public void openframe(){ 
     //window properties 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.setSize(1000,600); 
     frame.setResizable(false); 

     //changing icon of window 
     ImageIcon image = new ImageIcon("assets/icon.png"); 
     card.setIconImage(image.getImage()); 

     //label picture background 
     JLabel background = new JLabel(); 
     ImageIcon back = new ImageIcon("assets/background.jpg"); 
     background.setIcon(back); 
     background.setLocation(0,-125); 
     background.setSize(1000,700); 

     //label for first 
     JLabel first = new JLabel("Sample text"); 
     first.setForeground(Color.RED); 
     first.setSize(500,200); 
     first.setLocation(31, 150); 

     Draw drawing = new Draw(); 

     JLayeredPane layers = new JLayeredPane(); 
     layers.add(drawing, new Integer(3)); 
     layers.add(first, new Integer(2)); 
     layers.add(background,new Integer(1)); 
     frame.setLayeredPane(layers); 

    } 
} 

抽奖类:

public class Draw extends JPanel { 

    public void paintComponent(Graphics g) { 
     Graphics2D g2 = (Graphics2D)g; 

     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); 

     int startX = 00; 
     int startY = 00; 

     // First circle 
     Ellipse2D circle1 = new Ellipse2D.Double(startX, startY, 30, 30); 
     g2.setColor(Color.Black); 
     g2.draw(circle1); 
     g2.fill(circle1); 

     // Second circle 
     Ellipse2D circle2 = new Ellipse2D.Double(startX+20, startY, 30, 30); 
     g2.setColor(Color.Black); 
     g2.draw(circle2); 
     g2.fill(circle2); 
    } 
} 

回答

1

我试图通过添加)由的paintComponent(形成的绘图方法在我的框架layeredPane但它没有显示在JFrame中

Your DrawPanel没有尺寸,所以尺寸是(0,0),没有东西可以绘画。

但是,如果我把代码frame.getContentPane()。添加(图)和评论分层部分代码工作..

当您添加DrawPanel直接将内容窗格则面板被添加到“CENTER”,并且面板大小被布局管理器自动设置为帧中可用的空间。

+0

谢谢,它现在的作品! – Tarounen 2014-09-18 20:54:46