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();
图像纽伊