Java Swing - 在Panel中绘制图形

时间:2017-05-13 07:51:27

标签: java swing

我从我的软件中获取了这段代码。我有一个名为pnlUserInfo的面板。在其中,我有另一个名为pnlStatistikat的面板,其中有另一个面板(仅用于图形),称为pnGrafika。在第一行代码中,我绘制了一些东西然后我不知道如何将它包装在pnGrafik中。 (如何在pnGrafik中调用此类Grafika,以便可以显示对象)

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);
 }}  

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

很简单

pnGraphik.add(new Graphika());