这是我的代码:
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);
}
}
我不知道我必须在组合框的ItemListener下面放置什么以及如何在组合框中更改名称
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();
}
}
}
请问有人能帮帮我吗? 它说我需要一个参数但是给了一个颜色。 我知道我这样做了,但我没有看到另一种方式。 我是程序员的初学者,所以如果你能很好地解释我会学到一些东西
答案 0 :(得分:3)
GroeiendeCirkels类的构造函数是:
public GroeiendeCirkels()
因此您不需要任何参数,但用于创建类的代码是:
red = new GroeiendeCirkels(Color.RED);
并指定Color参数。出了点问题。之一:
另外,我甚至不明白你为什么要创建6个不同的面板。逻辑对我没有意义。我认为你只需要一个面板,然后组合框包含你圈子的不同颜色。