


Программирование
+2Помогите, пожалуйста, доделать код
1
Нужно сделать так, чтобы при нажатии мышкой на красный овал, изменялся цвет овала

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.Timer;
public class Pic{
public static void main(String[] args){
JFrame w = new JFrame("Окно");
w.setSize(400, 400);
w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
w.setLayout(new BorderLayout(1, 1));
Canvas canv = new Canvas();
w.add(canv);
w.setVisible(true);
}
}
class Canvas extends JComponent implements ActionListener//, MouseListener
{
//public void mousePressed(MouseEvent e){
//}
//public void mouseReleased(MouseEvent e){
//}
//public void mouseEntered(MouseEvent e){
//}
//public void mouseExited(MouseEvent e){
//}
//public void mouseClicked(MouseEvent e){
//int xM = e.getX();
//int yM = e.getY();
//if (xM >= xC && xM <= xC+20 && yM >= yC && yM <= yC+20 && cE){
//score++;
//cE = false;
//changeData(score);
//}
//}
//Color colorC;
public Canvas()
{
//this.addMouseListener(this);
super();
Timer timer = new Timer(100, this);
timer.start();
}
int x = 5;
int y = 5;
int x1 = 250;
int x2 = 270;
int x3 = 290;
@Override
public void actionPerformed(ActionEvent e){
if(y<75){
x+=4;
y+=2;
x1-=2;
x2-=2;
x3-=2;
}
else{
if(x1 < 290){
x1 += 5;
}
}
repaint();
}
public void paintComponent(Graphics g){
int xC = 50;
int yC = 20;
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
g2d.setPaint(Color.GREEN);
g2d.fillOval(x, 75, 15, 15);
g2d.setPaint(Color.RED);
g2d.fillOval(150, y, xC, yC);
g2d.setPaint(Color.BLUE);
int [] k = {x1, x2, x3};
int [] m = {100, 80, 110};
g2d.drawPolygon(k, m, 3);
super.repaint();
}
}
По дате
По рейтингу
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
public class Q233043003 implements Runnable {
private static final int INTERVAL = 1000 / 30; // ~30 fps
private JFrame frame;
private WierdComponent wierd;
private Timer renderTimer;
@Override
public void run() {
initComponents();
initEvents();
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
this.renderTimer = new Timer(INTERVAL, wierd::nextFrame);
renderTimer.start();
}
private void initComponents() {
this.frame = new JFrame(getClass().getSimpleName());
this.wierd = new WierdComponent();
Container pane = frame.getContentPane();
pane.setLayout(new BorderLayout());
pane.add(wierd, BorderLayout.CENTER);
}
private void initEvents() {
MouseAdapter mouseListener = new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
wierd.pressed(e);
}
};
wierd.addMouseListener(mouseListener);
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int res = JOptionPane.showConfirmDialog(frame, "Exit?",
"EXIT", JOptionPane.YES_NO_OPTION);
if (res != JOptionPane.YES_OPTION) {
return;
}
if (renderTimer != null) {
renderTimer.stop();
}
frame.setVisible(false);
frame.dispose();
}
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Q233043003());
}
}
Больше по теме