Я создал симуляцию, которая выполняет ряд вычислений, а затем сохраняет точку, состоящую из координат x и y, в список массивов точек.
Затем у меня есть цикл for, который перебирает каждую точку и рисует эту точку в графическом интерфейсе.Вот мой цикл for, который выполняется в конце симуляции и метод drawPoint:
//Iterates through each point in Point Array List
for(Point i: PointArray)
{
drawPoint(g, i, black); //Draw Point
}
//Draws point onto panel
public void drawPoint(Graphics g, Point PointArray, Color color)
{
Graphics2D g2d = (Graphics2D)g;
g2d.setStroke(new BasicStroke(2f));
g.setColor(color); //g2d.setColor(Color.black);
g2d.drawOval((int)PointArray.a, (int)PointArray.b, 2, 2);
}
Я хочу реализовать JComboBox, чтобы пользователь мог указать, какой цвет он хочет, чтобы график был окрашен при рисовании.,Я создал разные цветовые объекты для этого.
В моем методе actionPerformed у меня также есть код, который обрабатывает события JButton, которые запускают, останавливают и стирают симуляцию.Вот что у меня есть для моего метода actionPerformed:
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
JComboBox cb = (JComboBox)e.getSource();
String colorName = (String)cb.getSelectedItem();
//Get Graphics on Drawing Panel
Graphics g = dPanel.getGraphics();
//if JButton source == start, do something
//if JButton source == stop, do something
//If JButton source == erase, do something
if(colorName == "Default")
{
g.setColor(black);
}
if(colorName == "Red")
{
g.setColor(startColor);
}
if(colorName == "Green")
{
g.setColor(forestGreen);
}
}
Я получаю следующую ошибку: Исключение в потоке "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JButton не может быть приведенов javax.swing.JComboBox на SimulationGUI.actionPerformed (SimulationGUI.java:332)
Поэтому мой вопрос заключается в том, что я хочу сделать, даже если это возможно (и то, что моя реализация не работает)Каков был бы способ сделать это?
РЕДАКТИРОВАТЬ:
Вот мой новый слушатель действий для JComboBox:
colorBox.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JComboBox cb = (JComboBox)e.getSource();
String colorName = (String)cb.getSelectedItem();
Graphics g = dPanel.getGraphics();
if(colorName.equals("Default"))
{
g.setColor(black);
}
if(colorName.equals("Red"))
{
g.setColor(startColor);
}
if(colorName.equals("Green"))
{
g.setColor(forestGreen);
}
if(colorName.equals("Blue"))
{
g.setColor(eraseColor);
}
}
});
}