import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial")
public class Gui
extends JFrame {
public Gui() {
setDefaultCloseOperation
(JFrame.
EXIT_ON_CLOSE); Scene scene
= new Scene
(300,
300,
new Quad
(50,
50,
100,
100,
Color.
ORANGE)); pack();
setLocationRelativeTo(null);
}
public Quad
(int x,
int y,
int width,
int height,
Color color
) { super(x, y, width, height);
this.color = color;
}
public Color getColor
() { return color;
}
}
public class Scene
extends JPanel { private Quad quad;
public Scene(int width, int height, Quad quad) {
setPreferredSize
(new Dimension(width, height
)); this.quad = quad;
}
@Override
protected void paintComponent
(Graphics g
) { g2.setPaint(quad.getColor());
g2.fill(quad);
}
}
public static void main
(String[] args
) {
@Override
public void run() {
new Gui().setVisible(true);
}
});
}
}
aW1wb3J0IGphdmEuYXd0LkJvcmRlckxheW91dDsKaW1wb3J0IGphdmEuYXd0LkNvbG9yOwppbXBvcnQgamF2YS5hd3QuRGltZW5zaW9uOwppbXBvcnQgamF2YS5hd3QuR3JhcGhpY3M7CmltcG9ydCBqYXZhLmF3dC5HcmFwaGljczJEOwppbXBvcnQgamF2YS5hd3QuUmVjdGFuZ2xlOwoKaW1wb3J0IGphdmF4LnN3aW5nLkpGcmFtZTsKaW1wb3J0IGphdmF4LnN3aW5nLkpQYW5lbDsKaW1wb3J0IGphdmF4LnN3aW5nLlN3aW5nVXRpbGl0aWVzOwoKQFN1cHByZXNzV2FybmluZ3MoInNlcmlhbCIpCnB1YmxpYyBjbGFzcyBHdWkgZXh0ZW5kcyBKRnJhbWUgewoKICAgIHB1YmxpYyBHdWkoKSB7CgkJc2V0RGVmYXVsdENsb3NlT3BlcmF0aW9uKEpGcmFtZS5FWElUX09OX0NMT1NFKTsKCQlTY2VuZSBzY2VuZSA9IG5ldyBTY2VuZSgzMDAsIDMwMCwgbmV3IFF1YWQoNTAsIDUwLCAxMDAsIDEwMCwgQ29sb3IuT1JBTkdFKSk7CgkJZ2V0Q29udGVudFBhbmUoKS5hZGQoc2NlbmUsIEJvcmRlckxheW91dC5DRU5URVIpOwoJCXBhY2soKTsKCQlzZXRMb2NhdGlvblJlbGF0aXZlVG8obnVsbCk7Cgl9CgkKCXB1YmxpYyBjbGFzcyBRdWFkIGV4dGVuZHMgUmVjdGFuZ2xlIHsKCQlwcml2YXRlIENvbG9yIGNvbG9yOwoJCQoJCXB1YmxpYyBRdWFkKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBDb2xvciBjb2xvcikgewoJCQlzdXBlcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKCQkJdGhpcy5jb2xvciA9IGNvbG9yOwoJCX0KCQkKCQlwdWJsaWMgQ29sb3IgZ2V0Q29sb3IoKSB7CgkJCXJldHVybiBjb2xvcjsKCQl9CgkJCgl9CgkKCXB1YmxpYyBjbGFzcyBTY2VuZSBleHRlbmRzIEpQYW5lbCB7CgkJcHJpdmF0ZSBRdWFkIHF1YWQ7CgkJCgkJcHVibGljIFNjZW5lKGludCB3aWR0aCwgaW50IGhlaWdodCwgUXVhZCBxdWFkKSB7CgkJCXN1cGVyKG5ldyBCb3JkZXJMYXlvdXQoKSk7CgkJCXNldFByZWZlcnJlZFNpemUobmV3IERpbWVuc2lvbih3aWR0aCwgaGVpZ2h0KSk7CgkJCXRoaXMucXVhZCA9IHF1YWQ7CgkJfQoJCQoJCUBPdmVycmlkZQoJCXByb3RlY3RlZCB2b2lkIHBhaW50Q29tcG9uZW50KEdyYXBoaWNzIGcpIHsKCQkJR3JhcGhpY3MyRCBnMiA9IChHcmFwaGljczJEKWc7CgkJCWcyLnNldFBhaW50KHF1YWQuZ2V0Q29sb3IoKSk7CgkJCWcyLmZpbGwocXVhZCk7CgkJfQoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgkJU3dpbmdVdGlsaXRpZXMuaW52b2tlTGF0ZXIobmV3IFJ1bm5hYmxlKCkgewoJCQkKCQkJQE92ZXJyaWRlCgkJCXB1YmxpYyB2b2lkIHJ1bigpIHsKCQkJCW5ldyBHdWkoKS5zZXRWaXNpYmxlKHRydWUpOwoJCQl9CgkJfSk7Cgl9Cn0K