2017-05-13 202 views
-3

我從我的軟件中獲取了這段代碼。我有一個名爲pnlUserInfo的面板。在裏面,我有另一個名爲pnlStatistikat的面板,裏面還有另一個面板(僅用於圖形),稱爲pnGrafika。在代碼的第一行中,我畫了一些東西,然後我不知道如何將它包裝在pnGrafik中。 (如何調用這個類Grafika pnGrafik中,這樣可以顯示的對象)Java Swing - 在面板中繪製圖形

class Grafika extends JPanel{ 

private static final long serialVersionUID = 1L; 

@Override 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.setColor(Color.RED); 
    g.fillArc(0, 0, 100, 100, 0, (int)pnUserInfo.tOL); 
    g.setColor(Color.YELLOW); 
    g.fillArc(0, 0, 100, 100, (int)pnUserInfo.tOL, (int)pnUserInfo.tOK); 
    g.setColor(Color.GREEN); 
    g.fillArc(0, 0, 100, 100, (int)pnUserInfo.tOK+(int)pnUserInfo.tOL, (int)pnUserInfo.tOS); 
    g.setColor(Color.BLUE); 
    g.fillArc(0, 0, 100, 100, (int)pnUserInfo.tOK+(int)pnUserInfo.tOL+(int)pnUserInfo.tOS, (int)pnUserInfo.tOP); 
    } 
} 

public class pnUserInfo extends JPanel { 
    public pnUserInfo() { 

    final JPanel pnlStatistikat = new JPanel(); 
    pnlStatistikat.setBounds(0, 0, 530, 628); 
    pnlProfiliKryesor.add(pnlStatistikat); 
    pnlStatistikat.setBackground(myColor); 
    pnlStatistikat.setLayout(null); 
    pnlStatistikat.setVisible(false); 

    JPanel pnGrafik = new JPanel(); 
    pnGrafik.setBounds(250, 30, 110, 110); 
    pnGrafik.add(new Grafika()); 
    pnlStatistikat.add(pnGrafik); 
    pnGrafik.setBackground(myColor); 
    pnGrafik.setLayout(null); 
    pnGrafik.setVisible(true); 
}} 
+0

請張貼[mcve] – c0der

回答

2

看評論:

import java.awt.Color; 
import java.awt.Graphics; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

class Grafika extends JPanel{ 

    private static final long serialVersionUID = 1L; 

    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.setColor(Color.RED); 
     g.fillArc(0, 0, 100, 100, 0, 30); 
     g.setColor(Color.YELLOW); 
     g.fillArc(0, 0, 100, 100, 30, 50); 
     g.setColor(Color.GREEN); 
     g.fillArc(0, 0, 100, 100, 50, 90); 
     g.setColor(Color.BLUE); 
     g.fillArc(0, 0, 100, 100, 90,120); 
    } 

    public static void main(String[] args) { 

     JFrame frame = new JFrame(); 
     frame.setSize(300,250); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(new pnUserInfo()); 
     frame.setVisible(true); 
    } 
} 

class pnUserInfo extends JPanel { 

    public pnUserInfo() { 

     setLayout(null);//missing 

     JPanel pnlStatistikat = new JPanel(); 
     pnlStatistikat.setLayout(null); 
     pnlStatistikat.setBounds(0, 0, 300, 250); 
     pnlStatistikat.setBackground(Color.CYAN); 
     add(pnlStatistikat); //missing 
     //remove pnlStatistikat.setVisible(false); 

     JPanel pnGrafik = new JPanel(); 
     pnGrafik.setLayout(null); 
     pnGrafik.setBounds(50, 50, 200, 200); 
     pnGrafik.setBackground(Color.YELLOW); 

     Grafika graf = new Grafika(); 
     graf.setBounds(30, 30, 110, 110);//missing 
     pnGrafik.add(graf); 

     pnlStatistikat.add(pnGrafik); 
     pnGrafik.setVisible(true); 
    }} 

enter image description here

0

很簡單

pnGraphik.add(new Graphika()); 
+0

仍然無法正常工作。我將Grafika移動到了pnUserInfo()中,因爲它不會識別它,但仍然是面板(pnGrafik),但沒有圖形。 :( – concretejungle

+0

您是否已將面板的佈局設置爲空或您希望的佈局? –

+0

正如您所見,每個面板對象都根據需要具有空佈局 – concretejungle