import java.awt.*; import javax.swing.*; public class ColorButtons { private JPa
ID: 662801 • Letter: I
Question
import java.awt.*;
import javax.swing.*;
public class ColorButtons {
private JPanel panel;
private JLabel mouseTracker;
private Color[] colors = {Color.red, Color.green, Color.blue,
Color.cyan, Color.magenta, Color.yellow, Color.black,
Color.white};
public ColorButtons() {
// set up the window
JFrame win = new JFrame("Color Buttons");
win.setSize(560, 420);
win.setLocation(50, 50);
win.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// set up the toolbar
JPanel tool = new JPanel();
for(int i = 0; i < colors.length; i++) {
ColorButton b = new ColorButton(colors[i]);
tool.add(b);
}
win.add(tool, BorderLayout.NORTH);
// set up the display area
panel = new JPanel();
panel.setBackground(Color.lightGray);
win.add(panel);
win.setVisible(true);
}
public static void main(String[] args) {
new ColorButtons();
}
}
class ColorButton extends JPanel {
public ColorButton(Color c) {
setBackground(c);
setPreferredSize(new Dimension(50, 50));
}
}
CAN SOMEONE EDIT THE CODE WITH MOUSE LISTENER AND MOUSEMOTIONLISTENER SO WHEN WE CLICK THE COLOR AT THE TOP IT WILL CHANGE THE BACKGROUND.
Implementing handlers for the eight toolbar "buttons." The handler will change the background color of the large panel in center to the specified color.
Notice that the colors for the ColorButton objects are specified when the objects are created. They are "read" from the colors array. These are the same values that need to be specified by the click handler.
Explanation / Answer
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
public class MouseTest extends JFrame {
int startX, startY, endX, endY;
Color color = Color.BLACK;
public MouseTest() {
super();
final JPopupMenu pop = new JPopupMenu();
pop.add(new JMenuItem("Cut"));
pop.add(new JMenuItem("Copy"));
pop.add(new JMenuItem("Paste"));
pop.addSeparator();
pop.add(new JMenuItem("Select All"));
pop.setInvoker(this);
MouseListener popup = new MouseListener() {
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) {
showPopup(e);
}
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
showPopup(e);
}
}
private void showPopup(MouseEvent e) {
pop.show(e.getComponent(), e.getX(), e.getY());
}
};
addMouseListener(popup);
MouseListener drawing1 = new MouseListener() {
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
color = Color.RED;
startX = endX = e.getX();
startY = endY = e.getY();
repaint();
}
public void mouseReleased(MouseEvent e) {
color = Color.BLACK;
repaint();
}
};
addMouseListener(drawing1);
MouseMotionListener drawing2 = new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
endX = e.getX();
endY = e.getY();
repaint();
}
public void mouseMoved(MouseEvent e) {
}
};
addMouseMotionListener(drawing2);
}
public void paint(Graphics g) {
super.paint(g);
g.setColor(color);
g.drawLine(startX, startY, endX, endY);
}
public static void main(String args[]) {
JFrame frame = new MouseTest();
frame.setSize(300, 300);
frame.show();
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.