【发布时间】:2020-03-26 05:08:32
【问题描述】:
我使用 JPanel 和 Graphics 在 Java 中创建了一个程序。这是一个简单的 Paint Panel 程序,当我们拖动鼠标以及想要用不同颜色绘制线条时,只需按下面板中的按钮,问题就是当我按下面板中的按钮并拖动鼠标整个组件时出现在面板中会变成该颜色(按钮颜色)。
代码:
public class PaintAssign extends JPanel {
private ArrayList<Point> points= new ArrayList<>();
private ArrayList<Point> points2= new ArrayList<>();
public final JButton[] panelButton=new JButton[5];
public String[] colors={"RED","BLUE","GREEN","YELLOW","CYAN"};
int x=0;
public PaintAssign()
{ addMouseMotionListener(
new MouseMotionAdapter(){
@Override
public void mouseDragged(MouseEvent e)
{
points.add(e.getPoint());
repaint();
}
});
addMouseListener(
new MouseAdapter(){
});
for (int i = 0; i < 5; i++) {
Rectangle r = new Rectangle(22, 22);
panelButton[i] = new JButton();
panelButton[i].setText(colors[i]);
panelButton[i].setOpaque(true);
panelButton[i].setBounds(r);
this.add(panelButton[i]);
this.setVisible(true);
}
mouseAction handle=new mouseAction();
panelButton[0].addActionListener(handle);
panelButton[1].addActionListener(handle);
panelButton[2].addActionListener(handle);
panelButton[3].addActionListener(handle);
panelButton[4].addActionListener(handle);
}
private class mouseAction implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==panelButton[0])
{
x=1;
}
else if(e.getSource()==panelButton[1])
{
x=2;
}
else if(e.getSource()==panelButton[2])
{
x=3;
}
else if(e.getSource()==panelButton[3])
{
x=4;
}
else if(e.getSource()==panelButton[4])
{
x=5;
}
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if(x==0)
{
g.setColor(Color.BLACK);
}
else if(x==1)
{
g.setColor(Color.RED);
}
else if(x==2)
{
g.setColor(Color.BLUE);
}
else if(x==3)
{
g.setColor(Color.GREEN);
}
else if(x==4)
{
g.setColor(Color.YELLOW);
}else if(x==5)
{
g.setColor(Color.CYAN);
}
for(Point i:points)
{
g.fillOval(i.x,i.y,15,15);
}
}
【问题讨论】:
标签: java swing jpanel paintcomponent