gpt4 book ai didi

java - 使用 JComboBox 设置绘制的图的颜色

转载 作者:行者123 更新时间:2023-12-02 08:12:27 25 4
gpt4 key购买 nike

我创建了一个模拟,该模拟执行大量计算,然后将由 x 和 y 坐标组成的点存储到点数组列表中。

然后我有一个 for 循环,它迭代每个点并将该点绘制到 GUI 上。这是在模拟结束时执行的 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 的新 Action 监听器:

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

最佳答案

为组合框和按钮使用单独的 ActionListener。现在你的主要问题是你在这里进行转换,期待 JComboBox:

JComboBox cb = (JComboBox)e.getSource();

但是当单击按钮时,这将失败,因为 JButton 不是 JComboBox。如果它是在仅处理 JComboBox 的 ActionListener 中,那么执行此转换就可以了。

关于java - 使用 JComboBox 设置绘制的图的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com