*
* The MIT License (MIT)
*
- * Copyright (C) 2017 Kevin Lamonte
+ * Copyright (C) 2019 Kevin Lamonte
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
*/
class SwingComponent {
- /**
- * If true, use triple buffering when drawing to a JFrame.
- */
- public static boolean tripleBuffer = false;
+ // ------------------------------------------------------------------------
+ // Variables --------------------------------------------------------------
+ // ------------------------------------------------------------------------
/**
- * Get the BufferStrategy object needed for triple-buffering.
- *
- * @return the BufferStrategy
- * @throws IllegalArgumentException if this function is called when
- * not rendering to a JFrame
+ * If true, use triple buffering when drawing to a JFrame.
*/
- public BufferStrategy getBufferStrategy() {
- if (frame != null) {
- return frame.getBufferStrategy();
- } else {
- throw new IllegalArgumentException("BufferStrategy not used " +
- "for JComponent access");
- }
- }
+ public static boolean tripleBuffer = true;
/**
* The frame reference, if we are drawing to a JFrame.
private JComponent component;
/**
- * Get the JFrame reference.
- *
- * @return the frame, or null if this is drawing to a JComponent
+ * An optional border in pixels to add.
*/
- public JFrame getFrame() {
- return frame;
- }
+ private static final int BORDER = 1;
/**
- * Get the JComponent reference.
- *
- * @return the component, or null if this is drawing to a JFrame
+ * Adjustable Insets for this component. This has the effect of adding a
+ * black border around the drawing area.
*/
- public JComponent getComponent() {
- return component;
- }
+ Insets adjustInsets = new Insets(BORDER + 5, BORDER, BORDER, BORDER);
+
+ // ------------------------------------------------------------------------
+ // Constructors -----------------------------------------------------------
+ // ------------------------------------------------------------------------
/**
* Construct using a JFrame.
setupComponent();
}
+ // ------------------------------------------------------------------------
+ // SwingComponent ---------------------------------------------------------
+ // ------------------------------------------------------------------------
+
+ /**
+ * Get the BufferStrategy object needed for triple-buffering.
+ *
+ * @return the BufferStrategy
+ * @throws IllegalArgumentException if this function is called when
+ * not rendering to a JFrame
+ */
+ public BufferStrategy getBufferStrategy() {
+ if (frame != null) {
+ return frame.getBufferStrategy();
+ } else {
+ throw new IllegalArgumentException("BufferStrategy not used " +
+ "for JComponent access");
+ }
+ }
+
+ /**
+ * Get the JFrame reference.
+ *
+ * @return the frame, or null if this is drawing to a JComponent
+ */
+ public JFrame getFrame() {
+ return frame;
+ }
+
+ /**
+ * Get the JComponent reference.
+ *
+ * @return the component, or null if this is drawing to a JFrame
+ */
+ public JComponent getComponent() {
+ return component;
+ }
+
/**
* Setup to render to an existing JComponent.
*/
* @return the value of the insets property
*/
public Insets getInsets() {
+ Insets swingInsets = null;
if (frame != null) {
- return frame.getInsets();
+ swingInsets = frame.getInsets();
} else {
- return component.getInsets();
+ swingInsets = component.getInsets();
}
+ Insets result = new Insets(swingInsets.top + adjustInsets.top,
+ swingInsets.left + adjustInsets.left,
+ swingInsets.bottom + adjustInsets.bottom,
+ swingInsets.right + adjustInsets.right);
+ return result;
}
/**
public void setDimensions(final int width, final int height) {
// Figure out the thickness of borders and use that to set the final
// size.
- Insets insets = getInsets();
-
if (frame != null) {
+ Insets insets = getInsets();
frame.setSize(width + insets.left + insets.right,
height + insets.top + insets.bottom);
} else {
+ Insets insets = getInsets();
component.setSize(width + insets.left + insets.right,
height + insets.top + insets.bottom);
}