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);
然后指定颜色参数。所以有点不对劲。要么:
此外,我甚至不明白为什么要创建6个不同的面板。这种逻辑对我来说毫无意义。我认为您只需要一个面板,然后组合框包含您的圆圈的不同颜色。请澄清您的问题并发布您收到的任何错误消息。