2014-09-18 57 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