Crossfire JXClient, Trunk
GraphicsTest.java
Go to the documentation of this file.
1 /*
2  * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * - Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * - Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  *
15  * - Neither the name of Oracle nor the names of its
16  * contributors may be used to endorse or promote products derived
17  * from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 /*
33  * This source code is provided to illustrate the usage of a given feature
34  * or technique and has been deliberately simplified. Additional steps
35  * required for a production-quality application, such as security checks,
36  * input validation and proper error handling, might not be present in
37  * this sample code.
38  */
39 
40 
41 
42 import java.awt.*;
43 import java.util.*;
44 import java.awt.event.*;
45 import java.applet.Applet;
46 
47 
48 @SuppressWarnings("serial")
49 class GraphicsPanel extends Panel {
50 
51  ActionListener al;
52  ItemListener il;
54 
55  GraphicsPanel(EventListener listener) {
56  al = (ActionListener) listener;
57  il = (ItemListener) listener;
58 
59  setLayout(new BorderLayout());
60 
61  add("Center", cards = new GraphicsCards());
62 
63  Panel p = new Panel();
64  //p.setLayout(new BorderLayout());
65 
66  Button b = new Button("next");
67  b.addActionListener(al);
68  p.add(b);
69 
70  b = new Button("previous");
71  b.addActionListener(al);
72  p.add(b);
73 
74  p.add(new Label("go to:", Label.RIGHT));
75 
76  Choice c = new Choice();
77  c.addItemListener(il);
78  p.add(c);
79 
80  c.addItem("Arc");
81  c.addItem("Oval");
82  c.addItem("Polygon");
83  c.addItem("Rect");
84  c.addItem("RoundRect");
85 
86  add("North", p);
87 
88  setSize(400, 400);
89  }
90 
91  @Override
92  public Dimension getPreferredSize() {
93  return new Dimension(200, 100);
94  }
95 }
96 
97 
98 @SuppressWarnings("serial")
99 public class GraphicsTest extends Applet
100  implements ActionListener, ItemListener {
101 
103 
104  @Override
105  public void init() {
106  setLayout(new BorderLayout());
107  add("Center", mainPanel = new GraphicsPanel(this));
108  }
109 
110  @Override
111  public void destroy() {
112  remove(mainPanel);
113  }
114 
115  @Override
116  public void actionPerformed(ActionEvent e) {
117  String arg = e.getActionCommand();
118 
119  if ("next".equals(arg)) {
120  ((CardLayout) mainPanel.cards.getLayout()).next(mainPanel.cards);
121  } else if ("previous".equals(arg)) {
122  ((CardLayout) mainPanel.cards.getLayout()).previous(mainPanel.cards);
123  }
124  }
125 
126  @Override
127  public void itemStateChanged(ItemEvent e) {
128  ((CardLayout) mainPanel.cards.getLayout()).show(mainPanel.cards,
129  (String) e.getItem());
130  }
131 
132  public static void main(String args[]) {
133  AppletFrame.startApplet("GraphicsTest", "Graphics Test", args);
134  }
135 
136  @Override
137  public String getAppletInfo() {
138  return "An interactive demonstration of some graphics.";
139  }
140 } // end class GraphicsTest
141 
142 
143 @SuppressWarnings("serial")
144 class GraphicsCards extends Panel {
145 
146  public GraphicsCards() {
147  setLayout(new CardLayout());
148  add("Arc", new ArcCard());
149  add("Oval", new ShapeTest(new OvalShape()));
150  add("Polygon", new ShapeTest(new PolygonShape()));
151  add("Rect", new ShapeTest(new RectShape()));
152  add("RoundRect", new ShapeTest(new RoundRectShape()));
153  }
154 } // end class GraphicsCards
155 
156 
157 @SuppressWarnings("serial")
158 class ArcCard extends Panel {
159 
160  public ArcCard() {
161  setLayout(new GridLayout(0, 2));
162  add(new ArcPanel(true));
163  add(new ArcPanel(false));
164  add(new ArcDegreePanel(true));
165  add(new ArcDegreePanel(false));
166  }
167 } // end class ArcCard
168 
169 
170 @SuppressWarnings("serial")
171 class ArcDegreePanel extends Panel {
172 
173  boolean filled;
174 
175  public ArcDegreePanel(boolean filled) {
176  this.filled = filled;
177  }
178 
179  void arcSteps(Graphics g,
180  int step,
181  int x,
182  int y,
183  int w,
184  int h,
185  Color c1,
186  Color c2) {
187  int a1 = 0;
188  int a2 = step;
189  int progress = 0;
190  g.setColor(c1);
191  for (; (a1 + a2) <= 360; a1 = a1 + a2, a2 += 1) {
192  if (g.getColor() == c1) {
193  g.setColor(c2);
194  } else {
195  g.setColor(c1);
196  }
197 
198  if (filled) {
199  g.fillArc(x, y, w, h, a1, a2);
200  } else {
201  g.drawArc(x, y, w, h, a1, a2);
202  }
203 
204  progress = a1 + a2;
205  } // end for
206 
207  if (progress != 360) {
208  if (filled) {
209  g.fillArc(x, y, w, h, a1, 360 - progress);
210  } else {
211  g.drawArc(x, y, w, h, a1, 360 - progress);
212  }
213  } // end if
214  } // end arcSteps()
215 
216  @Override
217  public void paint(Graphics g) {
218  Rectangle r = getBounds();
219 
220  arcSteps(g, 3, 0, 0, r.width, r.height, Color.orange, Color.blue);
221 
222  arcSteps(g,
223  2,
224  r.width / 4,
225  r.height / 4,
226  r.width / 2,
227  r.height / 2,
228  Color.yellow,
229  Color.green);
230 
231  arcSteps(g,
232  1,
233  (r.width * 3) / 8,
234  (r.height * 3) / 8,
235  r.width / 4,
236  r.height / 4,
237  Color.magenta,
238  Color.white);
239 
240  } // end paint()
241 } // end class ArcDegreePanel
242 
243 
244 @SuppressWarnings("serial")
245 class ArcPanel extends Panel {
246 
247  boolean filled;
248 
249  public ArcPanel(boolean filled) {
250  this.filled = filled;
251  }
252 
253  @Override
254  public void paint(Graphics g) {
255  Rectangle r = getBounds();
256 
257  g.setColor(Color.yellow);
258  if (filled) {
259  g.fillArc(0, 0, r.width, r.height, 0, 45);
260  } else {
261  g.drawArc(0, 0, r.width, r.height, 0, 45);
262  }
263 
264  g.setColor(Color.green);
265  if (filled) {
266  g.fillArc(0, 0, r.width, r.height, 90, -45);
267  } else {
268  g.drawArc(0, 0, r.width, r.height, 90, -45);
269  }
270 
271  g.setColor(Color.orange);
272  if (filled) {
273  g.fillArc(0, 0, r.width, r.height, 135, -45);
274  } else {
275  g.drawArc(0, 0, r.width, r.height, 135, -45);
276  }
277 
278  g.setColor(Color.magenta);
279 
280  if (filled) {
281  g.fillArc(0, 0, r.width, r.height, -225, 45);
282  } else {
283  g.drawArc(0, 0, r.width, r.height, -225, 45);
284  }
285 
286  g.setColor(Color.yellow);
287  if (filled) {
288  g.fillArc(0, 0, r.width, r.height, 225, -45);
289  } else {
290  g.drawArc(0, 0, r.width, r.height, 225, -45);
291  }
292 
293  g.setColor(Color.green);
294  if (filled) {
295  g.fillArc(0, 0, r.width, r.height, -135, 45);
296  } else {
297  g.drawArc(0, 0, r.width, r.height, -135, 45);
298  }
299 
300  g.setColor(Color.orange);
301  if (filled) {
302  g.fillArc(0, 0, r.width, r.height, -45, -45);
303  } else {
304  g.drawArc(0, 0, r.width, r.height, -45, -45);
305  }
306 
307  g.setColor(Color.magenta);
308  if (filled) {
309  g.fillArc(0, 0, r.width, r.height, 315, 45);
310  } else {
311  g.drawArc(0, 0, r.width, r.height, 315, 45);
312  }
313 
314  } // end paint()
315 } // end class ArcPanel
316 
317 
318 abstract class Shape {
319 
320  abstract void draw(Graphics g, int x, int y, int w, int h);
321 
322  abstract void fill(Graphics g, int x, int y, int w, int h);
323 }
324 
325 
326 class RectShape extends Shape {
327 
328  @Override
329  void draw(Graphics g, int x, int y, int w, int h) {
330  g.drawRect(x, y, w, h);
331  }
332 
333  @Override
334  void fill(Graphics g, int x, int y, int w, int h) {
335  g.fillRect(x, y, w, h);
336  }
337 }
338 
339 
340 class OvalShape extends Shape {
341 
342  @Override
343  void draw(Graphics g, int x, int y, int w, int h) {
344  g.drawOval(x, y, w, h);
345  }
346 
347  @Override
348  void fill(Graphics g, int x, int y, int w, int h) {
349  g.fillOval(x, y, w, h);
350  }
351 }
352 
353 
354 class RoundRectShape extends Shape {
355 
356  @Override
357  void draw(Graphics g, int x, int y, int w, int h) {
358  g.drawRoundRect(x, y, w, h, 10, 10);
359  }
360 
361  @Override
362  void fill(Graphics g, int x, int y, int w, int h) {
363  g.fillRoundRect(x, y, w, h, 10, 10);
364  }
365 }
366 
367 
368 class PolygonShape extends Shape {
369  // class variables
370 
371  Polygon p;
372  Polygon pBase;
373 
374  public PolygonShape() {
375  pBase = new Polygon();
376  pBase.addPoint(0, 0);
377  pBase.addPoint(10, 0);
378  pBase.addPoint(5, 15);
379  pBase.addPoint(10, 20);
380  pBase.addPoint(5, 20);
381  pBase.addPoint(0, 10);
382  pBase.addPoint(0, 0);
383  }
384 
385  void scalePolygon(float w, float h) {
386  p = new Polygon();
387  for (int i = 0; i < pBase.npoints; ++i) {
388  p.addPoint((int) (pBase.xpoints[i] * w),
389  (int) (pBase.ypoints[i] * h));
390  }
391 
392  }
393 
394  @Override
395  void draw(Graphics g, int x, int y, int w, int h) {
396  Graphics ng = g.create();
397  try {
398  ng.translate(x, y);
399  scalePolygon(((float) w / 10f), ((float) h / 20f));
400  ng.drawPolygon(p);
401  } finally {
402  ng.dispose();
403  }
404  }
405 
406  @Override
407  void fill(Graphics g, int x, int y, int w, int h) {
408  Graphics ng = g.create();
409  try {
410  ng.translate(x, y);
411  scalePolygon(((float) w / 10f), ((float) h / 20f));
412  ng.fillPolygon(p);
413  } finally {
414  ng.dispose();
415  }
416  }
417 }
418 
419 
420 @SuppressWarnings("serial")
421 class ShapeTest extends Panel {
422 
423  Shape shape;
424  int step;
425 
426  public ShapeTest(Shape shape, int step) {
427  this.shape = shape;
428  this.step = step;
429  }
430 
431  public ShapeTest(Shape shape) {
432  this(shape, 10);
433  }
434 
435  @Override
436  public void paint(Graphics g) {
437  Rectangle bounds = getBounds();
438 
439  int cx, cy, cw, ch;
440 
441  Color color;
442 
443  for (color = Color.red, cx = bounds.x, cy = bounds.y,
444  cw = bounds.width / 2, ch = bounds.height;
445  cw > 0 && ch > 0;
446  cx += step, cy += step, cw -= (step * 2), ch -= (step * 2),
447  color = ColorUtils.darker(color, 0.9)) {
448  g.setColor(color);
449  shape.draw(g, cx, cy, cw, ch);
450  }
451 
452  for (cx = bounds.x + bounds.width / 2, cy = bounds.y,
453  cw = bounds.width / 2, ch = bounds.height;
454  cw > 0 && ch > 0;
455  cx += step, cy += step, cw -= (step * 2), ch -= (step * 2)) {
456  if (g.getColor() == Color.red) {
457  g.setColor(Color.blue);
458  } else {
459  g.setColor(Color.red);
460  }
461 
462  shape.fill(g, cx, cy, cw, ch);
463  } // end for
464  } // end paint()
465 } // end class ShapeTest
466 
467 
468 class ColorUtils {
469 
470  static Color brighter(Color c, double factor) {
471  return new Color(Math.min((int) (c.getRed() * (1 / factor)), 255),
472  Math.min((int) (c.getGreen() * (1 / factor)), 255),
473  Math.min((int) (c.getBlue() * (1 / factor)), 255));
474  }
475 
476  static Color darker(Color c, double factor) {
477  return new Color(Math.max((int) (c.getRed() * factor), 0),
478  Math.max((int) (c.getGreen() * factor), 0),
479  Math.max((int) (c.getBlue() * factor), 0));
480  }
481 }
RectShape.fill
void fill(Graphics g, int x, int y, int w, int h)
Definition: GraphicsTest.java:334
ColorUtils.darker
static Color darker(Color c, double factor)
Definition: GraphicsTest.java:476
GraphicsPanel.il
ItemListener il
Definition: GraphicsTest.java:52
GraphicsCards.GraphicsCards
GraphicsCards()
Definition: GraphicsTest.java:146
ArcDegreePanel.filled
boolean filled
Definition: GraphicsTest.java:173
Shape.fill
abstract void fill(Graphics g, int x, int y, int w, int h)
GraphicsTest.init
void init()
Definition: GraphicsTest.java:105
ArcCard.ArcCard
ArcCard()
Definition: GraphicsTest.java:160
OvalShape.fill
void fill(Graphics g, int x, int y, int w, int h)
Definition: GraphicsTest.java:348
PolygonShape.pBase
Polygon pBase
Definition: GraphicsTest.java:372
PolygonShape.p
Polygon p
Definition: GraphicsTest.java:371
PolygonShape.fill
void fill(Graphics g, int x, int y, int w, int h)
Definition: GraphicsTest.java:407
ArcCard
Definition: GraphicsTest.java:158
ArcPanel.paint
void paint(Graphics g)
Definition: GraphicsTest.java:254
RoundRectShape.draw
void draw(Graphics g, int x, int y, int w, int h)
Definition: GraphicsTest.java:357
PolygonShape.PolygonShape
PolygonShape()
Definition: GraphicsTest.java:374
ShapeTest
Definition: GraphicsTest.java:421
GraphicsTest.destroy
void destroy()
Definition: GraphicsTest.java:111
GraphicsTest.actionPerformed
void actionPerformed(ActionEvent e)
Definition: GraphicsTest.java:116
ArcDegreePanel.paint
void paint(Graphics g)
Definition: GraphicsTest.java:217
GraphicsTest.getAppletInfo
String getAppletInfo()
Definition: GraphicsTest.java:137
ArcDegreePanel.ArcDegreePanel
ArcDegreePanel(boolean filled)
Definition: GraphicsTest.java:175
GraphicsTest.mainPanel
GraphicsPanel mainPanel
Definition: GraphicsTest.java:102
GraphicsPanel.al
ActionListener al
Definition: GraphicsTest.java:51
GraphicsCards
Definition: GraphicsTest.java:144
ColorUtils
Definition: GraphicsTest.java:468
GraphicsTest
Definition: GraphicsTest.java:99
ShapeTest.ShapeTest
ShapeTest(Shape shape, int step)
Definition: GraphicsTest.java:426
GraphicsTest.main
static void main(String args[])
Definition: GraphicsTest.java:132
RoundRectShape.fill
void fill(Graphics g, int x, int y, int w, int h)
Definition: GraphicsTest.java:362
AppletFrame
Definition: AppletFrame.java:53
ShapeTest.shape
Shape shape
Definition: GraphicsTest.java:423
ArcPanel.filled
boolean filled
Definition: GraphicsTest.java:247
PolygonShape.draw
void draw(Graphics g, int x, int y, int w, int h)
Definition: GraphicsTest.java:395
RectShape
Definition: GraphicsTest.java:326
ArcPanel
Definition: GraphicsTest.java:245
class
About including and JRadioButtonMenuItem Metalworks is optimized to work with the Java look and such as that are specific to the Java look and feel Running then you should either specify the complete path to the java command or update your PATH environment variable as described in the installation instructions for the and many controls are non functional They are intended only to show how to construct the UI for such interfaces Things that do work in the Metalworks demo but also the sizes of many controls Also included with this demo is the PropertiesMetalTheme class
Definition: README.txt:54
OvalShape
Definition: GraphicsTest.java:340
GraphicsTest.itemStateChanged
void itemStateChanged(ItemEvent e)
Definition: GraphicsTest.java:127
GraphicsPanel
Definition: GraphicsTest.java:49
Shape.draw
abstract void draw(Graphics g, int x, int y, int w, int h)
RoundRectShape
Definition: GraphicsTest.java:354
OvalShape.draw
void draw(Graphics g, int x, int y, int w, int h)
Definition: GraphicsTest.java:343
PolygonShape
Definition: GraphicsTest.java:368
GraphicsPanel.getPreferredSize
Dimension getPreferredSize()
Definition: GraphicsTest.java:92
ShapeTest.step
int step
Definition: GraphicsTest.java:424
GraphicsPanel.GraphicsPanel
GraphicsPanel(EventListener listener)
Definition: GraphicsTest.java:55
ShapeTest.ShapeTest
ShapeTest(Shape shape)
Definition: GraphicsTest.java:431
ArcDegreePanel
Definition: GraphicsTest.java:171
ShapeTest.paint
void paint(Graphics g)
Definition: GraphicsTest.java:436
ArcPanel.ArcPanel
ArcPanel(boolean filled)
Definition: GraphicsTest.java:249
AppletFrame.startApplet
static void startApplet(String className, String title, String args[])
Definition: AppletFrame.java:55
PolygonShape.scalePolygon
void scalePolygon(float w, float h)
Definition: GraphicsTest.java:385
RectShape.draw
void draw(Graphics g, int x, int y, int w, int h)
Definition: GraphicsTest.java:329
ColorUtils.brighter
static Color brighter(Color c, double factor)
Definition: GraphicsTest.java:470
GraphicsPanel.cards
GraphicsCards cards
Definition: GraphicsTest.java:53
ArcDegreePanel.arcSteps
void arcSteps(Graphics g, int step, int x, int y, int w, int h, Color c1, Color c2)
Definition: GraphicsTest.java:179