Java 如何在绘图GUI中更改线条的颜色

Java 如何在绘图GUI中更改线条的颜色,java,swing,Java,Swing,嘿,我很难让工具栏上的按钮改变我正在绘制的线条的颜色。这是我的密码: public class PaintingGUI { private static final int FRAME_WIDTH = 960; private static final int FRAME_HEIGHT = 640; private final static String NEWLINE = System.lineSeparator(); private JTextArea textArea = new

嘿,我很难让工具栏上的按钮改变我正在绘制的线条的颜色。这是我的密码:

public class PaintingGUI {

private static final int FRAME_WIDTH = 960;
private static final int FRAME_HEIGHT = 640;
private final static String NEWLINE = System.lineSeparator();



private JTextArea textArea = new JTextArea();


class MyButtonListener extends JPanel implements MouseListener,
    MouseMotionListener, ActionListener {


    private int mouseX1 = -1; // the mouse Coordinates when pressed
    private int mouseY1 = -1;
  private int mouseX2 = -1; // mouse coordinates when released
  private int mouseY2 = -1;
    Color c;
    JButton red, green, blue, yellow, orange, black, pink, purple, dot, line, square, circle, ellipse, text;

    public MyButtonListener() {
        setOpaque(false);
    }

    public MyButtonListener(JButton red, JButton green, JButton blue, JButton yellow, JButton orange, JButton black, JButton pink, JButton purple,
                                    JButton dot, JButton line, JButton square, JButton circle, JButton ellipse, JButton text){
         // Need to communicate references to the buttons in this class
        this.red = red;
        this.green = green;
        this.blue = blue;
        this.yellow = yellow;
        this.orange = orange;
        this.black = black;
        this.pink = pink;
        this.purple = purple;
        this.dot = dot;
        this.line = line;
        this.square = square;
        this.circle = circle;
        this.ellipse = ellipse;
        this.text = text;
    }

public void actionPerformed(ActionEvent e) {

        JButton source = (JButton) e.getSource();
       if(source == red) {
            c = Color.RED;
            System.out.println(c);
            repaint();
        }
        if(source == green) {
            c = Color.GREEN;
            System.out.println("Colour is green");
            repaint();

        }
        if(source == blue) {
            c = Color.BLUE;
            System.out.println("Colour is blue");
            repaint();
        }
        if(source == yellow) {
            c = Color.YELLOW;
            System.out.println("Colour is yellow");
            repaint();repaint();
        }
        if(source == orange) {
            c = (new Color(255, 137, 0));
            System.out.println("Colour is orange");
        }
        if(source == black) {
            c = Color.BLACK;
            System.out.println("Colour is black");
        }
        if(source == pink) {
            c = Color.PINK;
            System.out.println("Colour is pink");
        }
        if(source == purple) {
            c = (new Color(153, 51, 255));
            System.out.println("Colour is purple");
        }
        if(source == dot) {
        }
        if(source == line) {
        }
        if(source == square) {
        }
      if(source == circle) {
        }           
     if(source == ellipse) {
        }       
        if(source == text) {
        }
    }


@Override
public void mouseClicked(MouseEvent event)
{
    int x = event.getX();
    int y = event.getY();
}

@Override
public void mousePressed(MouseEvent event)
{
    mouseX1 = event.getX();
    mouseY1 = event.getY();

}

@Override
public void mouseReleased(MouseEvent event)
{
    mouseX2 = event.getX();
    mouseY2 = event.getY();

    // trigger a call to paintComponent
    repaint();
}



@Override
public void mouseDragged(MouseEvent event)
{
    int x = event.getX();
    int y = event.getY();


}

 @Override
public void mouseEntered(MouseEvent event)
{
    System.out.println("Enter");
}

@Override
public void mouseExited(MouseEvent event)
{
    System.out.println("Exit");
}

@Override
public void mouseMoved(MouseEvent event)
{
    int x = event.getX();
    int y = event.getY();
}

@Override
public void paintComponent(Graphics g)
{
    if (mouseX1 < 0 || mouseY1 < 0)
        return;

      Graphics2D g2 = (Graphics2D) g;
    System.out.println("Drawing a line");
      g2.setColor(c);

    g2.drawLine(mouseX1, mouseY1, mouseX2, mouseY2);
}
}

public PaintingGUI createToolBar() {

    JFrame frame = new JFrame("Drawing");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    DrawingMenu meMenu = new DrawingMenu();
   frame.setJMenuBar(meMenu.createMenuBar());

    MyButtonListener panel = new MyButtonListener();
    panel.addMouseListener(panel);
    panel.addMouseMotionListener(panel);
    frame.setContentPane(panel);

    panel.setLayout(new BorderLayout());

    JToolBar toolBar = new JToolBar("Drag me!");
    panel.add(toolBar, BorderLayout.PAGE_END);

    // Make some buttons. Here we will paste an image icon on each
    JButton red = new JButton("red");
    red.setBackground(Color.RED);
    red.setContentAreaFilled(false);
    red.setOpaque(true);

    JButton green = new JButton("gre");
    green.setBackground(Color.GREEN);
    green.setContentAreaFilled(false);
    green.setOpaque(true);

    JButton blue = new JButton("blu");
    blue.setBackground(Color.BLUE);
    blue.setContentAreaFilled(false);
    blue.setOpaque(true);

    JButton yellow = new JButton("yel");
    yellow.setBackground(Color.YELLOW);
    yellow.setContentAreaFilled(false);
    yellow.setOpaque(true);

    JButton orange = new JButton("ora");
    orange.setBackground(new Color(255, 137, 0));
    orange.setContentAreaFilled(false);
    orange.setOpaque(true);

    JButton black = new JButton("bla");
    black.setBackground(Color.BLACK);
    black.setContentAreaFilled(false);
    black.setOpaque(true);

    JButton pink = new JButton("pin");
    pink.setBackground(Color.PINK);
    pink.setContentAreaFilled(false);
    pink.setOpaque(true);

    JButton purple = new JButton("pur");
    purple.setBackground(new Color(153, 51, 255));
    purple.setContentAreaFilled(false);
    purple.setOpaque(true);

    ImageIcon temp = new ImageIcon("C:\\Java Programs\\drawing\\dot.JPG");
  Image img = temp.getImage(); 
    Image newimg = img.getScaledInstance(17,16, java.awt.Image.SCALE_SMOOTH);
    ImageIcon dotpic = new ImageIcon(newimg);
    JButton dot = new JButton(dotpic);

    temp = new ImageIcon("C:\\Java Programs\\drawing\\line.JPG");
  img = temp.getImage(); 
    newimg = img.getScaledInstance(17,16, java.awt.Image.SCALE_SMOOTH);
    ImageIcon linepic = new ImageIcon(newimg);
    JButton line = new JButton(linepic);

    temp = new ImageIcon("C:\\Java Programs\\drawing\\square.JPG");
  img = temp.getImage(); 
    newimg = img.getScaledInstance(17,16, java.awt.Image.SCALE_SMOOTH);
    ImageIcon squarepic = new ImageIcon(newimg);
    JButton square = new JButton(squarepic);

    temp = new ImageIcon("C:\\Java Programs\\drawing\\circle.PNG");
  img = temp.getImage(); 
    newimg = img.getScaledInstance(17,16, java.awt.Image.SCALE_SMOOTH);
    ImageIcon circlepic = new ImageIcon(newimg);
    JButton circle = new JButton(circlepic);

    temp = new ImageIcon("C:\\Java Programs\\drawing\\ellipse.JPG");
  img = temp.getImage(); 
    newimg = img.getScaledInstance(17,16, java.awt.Image.SCALE_SMOOTH);
    ImageIcon ellipsepic = new ImageIcon(newimg);
    JButton ellipse = new JButton(ellipsepic);

    temp = new ImageIcon("C:\\Java Programs\\drawing\\text.PNG");
  img = temp.getImage(); 
    newimg = img.getScaledInstance(17,16, java.awt.Image.SCALE_SMOOTH);
    ImageIcon textpic = new ImageIcon(newimg);
    JButton text = new JButton(textpic);



// Add buttons to toolbar
    toolBar.add(red);
    toolBar.add(green);
    toolBar.add(blue);
    toolBar.add(yellow);
    toolBar.add(orange);
    toolBar.add(black);
    toolBar.add(pink);
    toolBar.add(purple);
   toolBar.add(dot);
    toolBar.add(line);
    toolBar.add(square);
    toolBar.add(circle);
    toolBar.add(ellipse);
    toolBar.add(text);


    // Set a tooltip text for each button
    red.setToolTipText("Colour is red");
    green.setToolTipText("Colour is green");
    blue.setToolTipText("Colour is blue");
    yellow.setToolTipText("Colour is yellow");
    orange.setToolTipText("Colour is orange");
    black.setToolTipText("Colour is black");
    pink.setToolTipText("Colour is pink");
    purple.setToolTipText("Colour is purple");
   dot.setToolTipText("Freehand line");
    line.setToolTipText("Draw a straight line");
    square.setToolTipText("Draw a Square");
    circle.setToolTipText("draw a circle");
    ellipse.setToolTipText("Draw an ellipse");
    text.setToolTipText("Write something");


    // Create an instance of the demo class
    PaintingGUI demo = new PaintingGUI();


    // Now we need to create an instance of our Button Listener class
    MyButtonListener listener =
                demo.new MyButtonListener(red, green, blue, yellow, orange, black, pink, purple, dot, line, square, circle, ellipse, text);

  // Register action listener defined in the listener class
    red.addActionListener(listener);
    green.addActionListener(listener);
    blue.addActionListener(listener);
    yellow.addActionListener(listener);
    orange.addActionListener(listener);
    black.addActionListener(listener);
    pink.addActionListener(listener);
    purple.addActionListener(listener);
    dot.addActionListener(listener);
    line.addActionListener(listener);
    square.addActionListener(listener);
    circle.addActionListener(listener);
    ellipse.addActionListener(listener);
    text.addActionListener(listener);


    frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
    frame.setVisible(true);



    return demo;
}   
}
公共类绘图GUI{
私有静态最终整数帧_宽度=960;
专用静态最终整型帧_高度=640;
私有最终静态字符串NEWLINE=System.lineSeparator();
私有JTextArea textArea=新JTextArea();
类MyButtonListener扩展JPanel实现MouseListener,
MouseMotionListener,ActionListener{
private int mouseX1=-1;//按下时的鼠标坐标
私有int mouseY1=-1;
private int mouseX2=-1;//释放时的鼠标坐标
私有int mouseY2=-1;
颜色c;
按钮红色、绿色、蓝色、黄色、橙色、黑色、粉色、紫色、点、线、正方形、圆形、椭圆、文本;
公共MyButtonListener(){
设置不透明(假);
}
公共MyButton列表(红色、绿色、蓝色、黄色、橙色、黑色、粉色、紫色、,
JButton点、JButton线、JButton正方形、JButton圆、JButton椭圆、JButton文本){
//需要传递对此类中按钮的引用
这个红色=红色;
这个.绿色=绿色;
蓝色=蓝色;
黄色=黄色;
这个橙色=橙色;
黑=黑;
这个.粉红色=粉红色;
这个紫色=紫色;
这个点=点;
this.line=line;
这个正方形=正方形;
这个圆=圆;
这个椭圆=椭圆;
this.text=文本;
}
已执行的公共无效操作(操作事件e){
JButton source=(JButton)e.getSource();
如果(源==红色){
c=颜色。红色;
系统输出打印ln(c);
重新油漆();
}
如果(源==绿色){
c=颜色。绿色;
System.out.println(“颜色为绿色”);
重新油漆();
}
如果(源==蓝色){
c=颜色。蓝色;
System.out.println(“颜色为蓝色”);
重新油漆();
}
如果(源==黄色){
c=颜色。黄色;
System.out.println(“颜色为黄色”);
重新绘制();重新绘制();
}
如果(源==橙色){
c=(新颜色(255,137,0));
System.out.println(“颜色为橙色”);
}
如果(源==黑色){
c=颜色。黑色;
System.out.println(“颜色为黑色”);
}
如果(源==粉红色){
c=颜色。粉红色;
System.out.println(“颜色为粉红色”);
}
如果(源==紫色){
c=(新颜色(153,51,255));
System.out.println(“颜色为紫色”);
}
如果(源==点){
}
如果(源==行){
}
如果(源==平方){
}
如果(源==圆){
}           
如果(源==椭圆){
}       
如果(源==文本){
}
}
@凌驾
公共void mouseClicked(MouseEvent事件)
{
intx=event.getX();
int y=event.getY();
}
@凌驾
公共无效鼠标按下(鼠标事件)
{
mouseX1=event.getX();
mouseY1=event.getY();
}
@凌驾
公共无效MouseEvent事件(MouseEvent事件)
{
mouseX2=event.getX();
mouseY2=event.getY();
//触发对paintComponent的调用
重新油漆();
}
@凌驾
公共无效鼠标标记(鼠标事件)
{
intx=event.getX();
int y=event.getY();
}
@凌驾
公共无效鼠标事件(鼠标事件)
{
系统输出打印项次(“输入”);
}
@凌驾
public void mouseExited(MouseEvent事件)
{
System.out.println(“退出”);
}
@凌驾
public void mouseMoved(MouseEvent事件)
{
intx=event.getX();
int y=event.getY();
}
@凌驾
公共组件(图形g)
{
if(mouseX1<0 | | mouseY1<0)
返回;
图形2d g2=(图形2d)g;
System.out.println(“画一条线”);
g2.setColor(c);
g2.拉线(鼠标1、鼠标1、鼠标2、鼠标2);
}
}
公共绘图GUI createToolBar(){
JFrame=新JFrame(“图纸”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DrawingMenu菜单=新建DrawingMenu();
frame.setJMenuBar(meMenu.createMenuBar());
MyButtonListener面板=新建MyButtonListener();
面板。addMouseListener(面板);
panel.addMouseMotionListener(panel);
frame.setContentPane(面板);
panel.setLayout(新的BorderLayout());
JToolBar toolBar=newjtoolbar(“拖动我!”);
面板.添加(工具栏,边框布局.第\页结束);
//制作一些按钮。在这里,我们将在每个按钮上粘贴一个图像图标
JButton red=新JButton(“红色”);
红色。挫折背景(颜色。红色);
红色。setContentAreaFilled(假);
红色。设置不透明(真);
JButton绿色=新JButton(“gre”);
绿色。挫折背景(颜色。绿色);
绿色。setContentAreaFilled(假);
绿色。设置不透明(真);
JButton blue=新JButton(“blu”);
蓝色。挫折背景(颜色。蓝色);
蓝色。setContentAreaFilled(假);
蓝色。设置不透明(真);
JButton yellow=新JButton(“yel”);
黄色。挫折背景(颜色。黄色);
黄色。setContentAreaFilled(假);
黄色。设置不透明(真);
JButton橙色=新JButton(“ora”);
橙色。挫折背景(新颜色(255137,0));
橙色。setContentAreaFilled(假);
橙色。设置不透明(真);
JButton black=新JButton(“bla”);
黑色。背景(颜色。黑色);
黑色。setContentAreaFilled(假);
黑色。设置不透明(真);
JButton粉红色=新JButton(“pin”);
粉红色。挫折背景(颜色。粉红色);
粉红色。setContentAreaFilled(假);
粉红色。设置不透明(真);
JButton紫色=新JButton(“pur”);
紫色。挫折背景(新颜色(153,51,255));
紫色。setContentAreaFilled(假);
紫色。毛不透明(真);
ImageIcon temp=新的ImageIcon(“C:\\Java程序\\绘图\\dot.JPG”);
Image img=temp.getImage();
图像纽伊