java绘画小程序-需要帮助添加单选按钮上的操作吗
我需要制作一个java小程序,允许用户使用鼠标进行绘制。启动小程序后,将打开第二个窗口,允许用户从6种不同颜色中选择一种进行绘制 首先,我编写代码来构造一个包含getcurrentcolor方法的工具栏窗口。我似乎无法将按下按钮与颜色变化联系起来 如果启动小程序,工具栏窗口将成功打开,并且我可以用黑色绘制,因此我唯一的问题是在工具栏窗口上选择一种颜色并用该颜色绘制 工具栏代码:java绘画小程序-需要帮助添加单选按钮上的操作吗,java,applet,radio-button,Java,Applet,Radio Button,我需要制作一个java小程序,允许用户使用鼠标进行绘制。启动小程序后,将打开第二个窗口,允许用户从6种不同颜色中选择一种进行绘制 首先,我编写代码来构造一个包含getcurrentcolor方法的工具栏窗口。我似乎无法将按下按钮与颜色变化联系起来 如果启动小程序,工具栏窗口将成功打开,并且我可以用黑色绘制,因此我唯一的问题是在工具栏窗口上选择一种颜色并用该颜色绘制 工具栏代码: 绘制小程序代码:我感觉你的教授希望你自己制作。下面是我在10分钟左右的时间里拼凑的一个例子。它非常粗糙,缺乏良好的编码
绘制小程序代码:我感觉你的教授希望你自己制作。下面是我在10分钟左右的时间里拼凑的一个例子。它非常粗糙,缺乏良好的编码风格,但如果您需要了解其中涉及的内容,它应该是有用的。无论何时选择颜色,示例代码都会打印出该颜色
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
public class MyColorChooser extends Component
{
private Color[] colors;
private Color selectedColor;
public MyColorChooser(Color ... colors)
{
this.colors = colors;
this.selectedColor = colors[0];
this.addMouseListener
(
new MouseAdapter()
{
@Override public void mouseClicked(MouseEvent e)
{
int tileWidth = MyColorChooser.this.getWidth();
tileWidth /= MyColorChooser.this.colors.length;
int index = e.getX()/(tileWidth);
MyColorChooser.this.selectedColor = MyColorChooser.this.colors[index];
}
}
);
}
@Override public void paint(Graphics renderer)
{
int width = this.getWidth()/this.colors.length;
int height = this.getHeight();
for(int i = 0; i < this.colors.length; i++)
{
renderer.setColor(this.colors[i]);
renderer.fillRect(width*i,0,width,height);
}
}
public Color getSelectedColor()
{
return this.selectedColor;
}
public static void main(String ... args) throws Throwable
{
JFrame f = new JFrame();
f.setSize(200,100);
f.getContentPane().setLayout(null);
MyColorChooser chooser = new MyColorChooser
(
Color.RED,
Color.GREEN,
Color.BLUE,
Color.YELLOW,
Color.WHITE,
Color.BLACK
);
f.getContentPane().add(chooser);
chooser.setBounds(0,0,200,50);
f.setVisible(true);
Color lastColor = chooser.getSelectedColor();
for(;;)
{
if(!chooser.getSelectedColor().equals(lastColor))
{
lastColor = chooser.getSelectedColor();
System.out.printf("Selected Color:%s\n",lastColor.toString());
}
Thread.sleep(100);
}
}
}
我在这里给出了3个按钮的方法,您可以添加其余的按钮。这样做的目的是保留当前选定的颜色字段,并在每次通过ActionListener选择按钮时对其进行更新。从按钮到它所代表的颜色的映射是不必要的,但会使代码更易于管理
public class ToolBarWindow extends JFrame {
private static Map<JRadioButton, Color> colors = new HashMap<>();
private static Color currentColor = Color.BLACK;
public static void main(String[] args) {
ToolBarWindow frame = new ToolBarWindow();
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Colors");
frame.setVisible(true);
}
public ToolBarWindow() {
JPanel jpRadioButtons = new JPanel();
jpRadioButtons.setLayout(new GridLayout(3, 1));
// put the other colors
JRadioButton red = new JRadioButton("red");
JRadioButton black = new JRadioButton("black");
JRadioButton magenta = new JRadioButton("magenta");
red.addActionListener(new MyActionListener());
black.addActionListener(new MyActionListener());
magenta.addActionListener(new MyActionListener());
jpRadioButtons.add(red);
jpRadioButtons.add(black);
jpRadioButtons.add(magenta);
colors.put(red, Color.RED);
colors.put(black, Color.BLACK);
colors.put(magenta, Color.MAGENTA);
add(jpRadioButtons, BorderLayout.WEST);
ButtonGroup bg = new ButtonGroup();
bg.add(red);
bg.add(black);
bg.add(magenta);
}
Color getCurrentColor() {
return currentColor;
}
private class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
currentColor = colors.get(e.getSource());
}
}
}
你试过了吗?我的教授说我们不能使用JColorChoose或其他你不能使用的东西?下面是描述:修改上面的程序以合并颜色。在单独的窗口中,提供RadioButton对象的“toobar”,其中列出以下六种颜色:红色、黑色、洋红色、蓝色、绿色和黄色。工具栏应该作为名为ToolBarWindow的框架的子类实现,并且应该由六个按钮组成,每个按钮都有适当的颜色名称。当选择新颜色时,绘图应以新颜色进行。为什么有动作方法?