2017-03-08 53 views
0

我剛開始使用Java。 我沒有創建窗口,按鈕和任何圖形的問題。 但是,我不能讓許多按鈕,圖形和文本框的窗口。 當我添加按鈕到我的窗口我不能看到圖形。 我該怎麼做?Java(Button + Graphics)

代碼:

package today; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.geom.Ellipse2D; 
import java.awt.geom.*; 
import java.awt.event.*; 
import java.awt.Graphics; 

public class mybuttonapp extends JFrame 
{ 



    private mybuttonapp() 
    { 
    } 



    public static void main(String[] args) 
    { 
     // TODO Auto-generated method stub 
     //new mybuttonapp().setVisible(true); 

     //-- 

     JFrame f=new JFrame("Button Example"); 
     f.setVisible(true); 
     f.setSize(900, 600); 
     //f.setLayout(null); 
     f.setDefaultCloseOperation(EXIT_ON_CLOSE); 

     JPanel p1 = new JPanel(); 
     p1.setBackground(Color.GREEN); 
     p1.setPreferredSize(new Dimension (100,100)); 
     p1.setVisible(true); 
     f.add(p1); 


     My2d paint1 = new My2d(); 



     JButton b1=new JButton("Click Here"); 
     b1.setBounds(10,10,100,50); 


     p1.add(b1); 
     p1.add(paint1); 
     } 

code 2: 

package today; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.geom.Ellipse2D; 
import java.awt.geom.*; 
import java.awt.event.*; 

public class My2d extends JComponent 

{ 
     public void paint (Graphics g) 
     { 

      Graphics2D g2 = (Graphics2D) g; 

      Ellipse2D.Double circle = new Ellipse2D.Double(300,300,50,50); 
      g2.fill(circle); 

      } 

} 

回答

0

您需要檢查LayoutManager如何在Java中工作。它們可以幫助您將元素放在容器中的正確位置(JFrame/JPanel)。 https://docs.oracle.com/javase/tutorial/uiswing/layout/layoutlist.html

通常我的BorderLayoutGridBagLayout相結合的工作,因爲它是相當靈活的 - 但是很多用戶覺得GridBagLayout太複雜了,特別適合初學者。