Java 尝试制作一个组合框,改变一个可以移动的圆的颜色

Java 尝试制作一个组合框,改变一个可以移动的圆的颜色,java,swing,colors,jcombobox,paintcomponent,Java,Swing,Colors,Jcombobox,Paintcomponent,这是我的密码: package driehoek; import javax.swing.*; import java.awt.*; public class Driehoek extends JFrame { public static void main(String[] args) { JFrame frame = new Driehoek(); frame.setSize(400,400); frame.setDefa

这是我的密码:

package driehoek;

import javax.swing.*;
import java.awt.*;

public class Driehoek extends JFrame 
{
    public static void main(String[] args)
    {
        JFrame frame = new Driehoek();
        frame.setSize(400,400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
        JPanel pnlTekenen = new GroeiendeCirkels();
        frame.setContentPane(pnlTekenen);
        frame.setTitle("Tekenen");
        frame.setVisible(true);
    }
}
我不知道我必须在combobox的ItemListener下面放置什么,以及如何更改de combobox中的名称 GroeiendeCirkels的代码

 package driehoek;

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

  class GroeiendeCirkels extends JPanel
  {
  private JButton knop1, knop2, knop3, knop4, knop5, knop6, knop7;
  private int diameter, breedte, hoogte;
  private JComboBox cmbSelect;
  private Color colors[] = {Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW, Color.PINK, Color.ORANGE};
    public GroeiendeCirkels()
    {
    setBackground(Color.WHITE);
    diameter = 100;
    breedte = 150;
    hoogte = 150;

    cmbSelect = new JComboBox(colors);
    cmbSelect.setSelectedIndex(0);
    cmbSelect.addItemListener(new KnopHandler7());

    knop1 = new JButton ("Bigger");
    knop1.addActionListener(new KnopHandler1());

    knop2 = new JButton ("Smaller");
    knop2.addActionListener(new KnopHandler2());

    knop3 = new JButton ("MoveRight");
    knop3.addActionListener(new KnopHandler3());

    knop4 = new JButton ("MoveLeft");
    knop4.addActionListener(new KnopHandler4());

    knop5 = new JButton ("MoveDown");
    knop5.addActionListener(new KnopHandler5());

    knop6 = new JButton ("MoveUp");
    knop6.addActionListener(new KnopHandler6());

    add (knop1);
    add (knop2);
    add (knop3);
    add (knop4);
    add (knop5);
    add (knop6);
    add (cmbSelect);
    }
    public void paintComponent(Graphics g)
    {
    super.paintComponent(g);
    g.setColor(colors[0]);
    g.fillOval(breedte, hoogte, diameter, diameter);

    if (cmbSelect.getSelectedIndex()==0)
        {
            g.setColor(colors[0]);
        }
        else if (cmbSelect.getSelectedIndex()==1)
        {
            g.setColor(colors[1]);
        }
        else if (cmbSelect.getSelectedIndex()==2)
        {
            g.setColor(colors[2]);
        }
        else if (cmbSelect.getSelectedIndex()==3)
        {
            g.setColor(colors[3]);
        }
        else if (cmbSelect.getSelectedIndex()==4)
        {
            g.setColor(colors[4]);
        }
        else if (cmbSelect.getSelectedIndex()==5)
        {
            g.setColor(colors[5]);
        }

    }
    class KnopHandler1 implements ActionListener 
    {
    public void actionPerformed(ActionEvent e )
    {
        diameter++;
        repaint();
    }
    }
    class KnopHandler2 implements ActionListener 
    {
    public void actionPerformed(ActionEvent e )
    {
        diameter--;
        repaint();
    }
    }
    class KnopHandler3 implements ActionListener 
    {
    public void actionPerformed(ActionEvent e )
    {
        breedte++;
        repaint();
    }
    }
    class KnopHandler4 implements ActionListener 
    {
    public void actionPerformed(ActionEvent e )
    {
        breedte--;
        repaint();
    }
    }
    class KnopHandler5 implements ActionListener 
    {
    public void actionPerformed(ActionEvent e )
    {
        hoogte++;
        repaint();
    }
    }
    class KnopHandler6 implements ActionListener 
    {
    public void actionPerformed(ActionEvent e )
    {
        hoogte--;
        repaint();
    }
    }
   class KnopHandler7 implements ItemListener 
     {
        public void itemStateChanged(ItemEvent i)    
        {

            repaint();
        }
    }
}
不行,谁能帮帮我吗? 它说我需要一个论点,但给了我颜色。 我知道是我干的,但我看不到其他办法。
我是一名程序员新手,如果你能解释清楚,我会学到一些东西,你的GroeiendeCirkels类的构造函数是:

public GroeiendeCirkels()
red = new GroeiendeCirkels(Color.RED);
因此,您不需要任何参数,但用于创建类的代码是:

public GroeiendeCirkels()
red = new GroeiendeCirkels(Color.RED);
然后指定颜色参数。所以有点不对劲。要么:

  • 您需要添加颜色作为构造函数的参数,或者
  • 创建类时需要删除Color.RED

  • 此外,我甚至不明白为什么要创建6个不同的面板。这种逻辑对我来说毫无意义。我认为您只需要一个面板,然后组合框包含您的圆圈的不同颜色。

    请澄清您的问题并发布您收到的任何错误消息。