32 setLayout(
new BorderLayout());
35 JPanel leftPanel =
new JPanel(
new BorderLayout());
36 leftPanel.setPreferredSize(
new Dimension(200, 0));
37 leftPanel.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1,
new Color(220, 220, 220)));
38 leftPanel.setBackground(
new Color(249, 249, 249));
42 leftPanel.add(
new JScrollPane(
costumeList), BorderLayout.CENTER);
44 JPanel btnPanel =
new JPanel(
new GridLayout(3, 1, 5, 5));
45 btnPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
46 btnPanel.setOpaque(
false);
48 JButton refreshBtn =
new JButton(
"Refresh Assets");
51 JButton addBtn =
new JButton(
"Paint New");
54 JButton importBtn =
new JButton(
"Import Image");
57 btnPanel.add(refreshBtn);
59 btnPanel.add(importBtn);
60 leftPanel.add(btnPanel, BorderLayout.SOUTH);
63 JPanel toolbar =
new JPanel(
new FlowLayout(FlowLayout.LEFT));
64 toolbar.setBackground(
new Color(240, 240, 240));
67 String[] tools = {
"Brush",
"Eraser",
"Fill"};
68 for (String tool : tools) {
69 JButton b =
new JButton(tool);
75 JSpinner sizeSpinner =
new JSpinner(
new SpinnerNumberModel(5, 1, 100, 1));
76 sizeSpinner.addChangeListener(e ->
brushSize = (
int) sizeSpinner.getValue());
77 toolbar.add(
new JLabel(
" Size:")); toolbar.add(sizeSpinner);
80 JButton colorBtn =
new JButton(
"Color");
81 colorBtn.addActionListener(e -> {
82 Color c = JColorChooser.showDialog(
this,
"Select Color",
currentColor);
85 toolbar.add(colorBtn);
88 JButton zoomIn =
new JButton(
"+");
89 JButton zoomOut =
new JButton(
"-");
92 toolbar.add(
new JLabel(
" Zoom:")); toolbar.add(zoomIn); toolbar.add(zoomOut);
95 widthSpinner =
new JSpinner(
new SpinnerNumberModel(480, 1, 2000, 10));
96 heightSpinner =
new JSpinner(
new SpinnerNumberModel(360, 1, 2000, 10));
97 JButton resizeBtn =
new JButton(
"Resize");
100 toolbar.add(
new JLabel(
" W:")); toolbar.add(
widthSpinner);
102 toolbar.add(resizeBtn);
105 JButton saveBtn =
new JButton(
"Save To Assets");
107 toolbar.add(Box.createHorizontalStrut(10));
108 toolbar.add(saveBtn);
113 protected void paintComponent(Graphics g) {
114 super.paintComponent(g);
116 Graphics2D g2 = (Graphics2D) g;
120 g2.setColor(Color.WHITE);
121 g2.fillRect(0, 0, drawW, drawH);
123 g2.setColor(
new Color(200, 200, 200));
124 g2.drawRect(0, 0, drawW, drawH);
128 canvas.setBackground(
new Color(230, 230, 230));
130 MouseAdapter ma =
new MouseAdapter() {
131 @Override
public void mousePressed(MouseEvent e) { useTool(e.getPoint()); }
132 @Override
public void mouseDragged(MouseEvent e) { useTool(e.getPoint()); }
134 private void useTool(Point p) {
136 int imgX = (int)(p.x /
zoom);
137 int imgY = (int)(p.y /
zoom);
141 g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
144 g2.setComposite(AlphaComposite.SrcOver);
148 g2.setComposite(AlphaComposite.Clear);
151 g2.setComposite(AlphaComposite.SrcOver);
159 canvas.addMouseListener(ma);
160 canvas.addMouseMotionListener(ma);
163 if (!e.getValueIsAdjusting() &&
costumeList.getSelectedIndex() != -1) {
170 add(leftPanel, BorderLayout.WEST);
171 add(toolbar, BorderLayout.NORTH);
172 add(
new JScrollPane(
canvas), BorderLayout.CENTER);