Trying to control the position of buffered graphics
I just learned how to use double buffering but now I am having trouble position my graphics. I want to put my graphics in the middle of my applet and also my components do not show up.
Here is my code. It may be a little confusing because I commented out some code that I used previously for painting and positioning the graphics. Good luck.
import java.lang.Integer;
import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.awt.Graphics.*;
import javax.swing.*;
import java.awt.*;
import javax.swing.text.*;
import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.JApplet.*;
import javax.swing.JFrame.*;
import java.applet.Applet;
import javax.swing.border.*;
import javax.swing.Spring.*;
import java.awt.geom.AffineTransform;
import java.awt.Graphics2D;
//Class definition
public class Shapeshift extends JApplet{
private int x;
private int a;
private int b;
private int c;
private int d;
private int q;
private int f;
private int z;
int y = 300;
int g= 5;
int w = 20;
int h = 10;
int panelheight = 100;
int panelwidth = 540;
//Text
int ty = 10;
int tx = 10;
int twid = 40;
int thei = 20;
int bwid = 50;
int bhei = 20;
//Defining textfields
JTextField Lfield = new JTextField(5);
JTextField Rfield = new JTextField(5);
JTextField rfield = new JTextField(5);
JTextField Hfield = new JTextField(5);
JTextField tfield = new JTextField(5);
JTextField hfield = new JTextField(5);
JTextField lfield = new JTextField(5);
public void paint(Graphics g) {
//super.paint(g);
//Graphics2D g2 = (Graphics2D) g;
//Dimension d = getSize();
// The object we will use to write with instead of the standard screen graphics
Graphics bufferGraphics;
// The image that will contain everything that has been drawn on
// bufferGraphics.
Image offscreen;
// To get the width and height of the applet.
Dimension dim;
dim = getSize();
//setBackground(Color.black);
// Create an offscreen image to draw on
// Make it the size of the applet, this is just perfect, Larger
// size could slow it down unnecessarily.
offscreen = createImage(dim.width,dim.height);
// by doing this everything that is drawn by bufferGraphics
// will be written on the offscreen image.
bufferGraphics = offscreen.getGraphics();
int w = dim.width;
int h = dim.height;
//AffineTransform saveXform = bufferGraphics.getTransform();
AffineTransform toCenterAt = new AffineTransform();
toCenterAt.translate(w/2, h/2);
/*g2.transform(toCenterAt);
g2.setColor(Color.yellow);
g2.fillRect(-25, 30-a, 25+x, 10);
g2.fillRect(-25, 70+a, 25+x, 10);
g2.fillRect(50-x, -30-a, 25+x, 10);
g2.fillRect(50-x, 70+a, 25+x, 10);
g2.setColor(Color.blue);
g2.fillRect(-25, -40-a, 100, 10);
g2.fillRect(-25, 80+a, 100, 10);
g2.setColor(Color.gray);
g2.fillRect(200, 0+f, 50 - (2*x), 50-(2*f));
g2.fillRect(-25, -20-a, x + 25, 90+(2*a));
g2.fillRect(50-x, -20-a, 25+x, 90+(2*a));*/
//bufferGraphics.transform(toCenterAt);
bufferGraphics.setColor(Color.yellow);
//bufferGraphics.clearRect(0,0,dim.width,dim.width);
bufferGraphics.fillRect(-25, -30-a, 25+x, 10);
bufferGraphics.fillRect(-25, 70+a, 25+x, 10);
bufferGraphics.fillRect(50-x, -30-a, 25+x, 10);
bufferGraphics.fillRect(50-x, 70+a, 25+x, 10);
bufferGraphics.setColor(Color.blue);
bufferGraphics.fillRect(-25, -40-a, 100, 10);
bufferGraphics.fillRect(-25, 80+a, 100, 10);
bufferGraphics.setColor(Color.gray);
bufferGraphics.fillRect(x, 0+f, 50 - (2*x), 50-(2*f));
bufferGraphics.fillRect(-25, -20-a, x + 25, 90+(2*a));
bufferGraphics.fillRect(50-x, -20-a, 25+x, 90+(2*a));
// Wipe off everything that has been drawn before
// Otherwise previous drawings would also be displayed.
// draw the rect at the current mouse position
// to the offscreen image
// draw the offscreen image to the screen like a normal image.
// Since offscreen is the screen width we start at 0,0.
g.drawImage(offscreen,0,0,this);
repaint();
}
public void update(Graphics g)
{
paint(g);
}
public void init() {
//Defining buttons(in an array)
JButton buttons[] = new JButton[14];
buttons[0] = new JButton("UP");
buttons[1] = new JButton("DOWN");
buttons[2] = new JButton("UP");
buttons[3] = new JButton("DOWN");
buttons[4] = new JButton("UP");
buttons[5] = new JButton("DOWN");
buttons[6] = new JButton("UP");
buttons[7] = new JButton("DOWN");
buttons[8] = new JButton("UP");
buttons[9] = new JButton("DOWN");
buttons[10] = new JButton("UP");
buttons[11] = new JButton("DOWN");
buttons[12] = new JButton("UP");
buttons[13] = new JButton("DOWN");
//Defining panels
JPanel dimension = new JPanel();
//Setting initial text values to zero
int start = 0;
Lfield.setText(start + "");
Rfield.setText(start + "");
rfield.setText(start + "");
lfield.setText(start + "");
tfield.setText(start + "");
Hfield.setText(start + "");
hfield.setText(start + "");
//Setting up SpringLayout
SpringLayout spring = new SpringLayout();
SpringLayout spring2 = new SpringLayout();
Container c = getContentPane();
c.setLayout(spring);
Spring width = Spring.constant(w);
Spring height = Spring.constant(h);
Spring xvalue = Spring.constant(g);
Spring yvalue = Spring.constant(y);
Spring xxvalue = spring.getConstraint(SpringLayout.WEST, c);
Spring yyvalue = spring.getConstraint(SpringLayout.SOUTH, c);
//Panel 1 parameters
Spring panwidthr = spring.getConstraint(SpringLayout.EAST, c);
Spring panheight = Spring.constant(panelheight);
Spring panwidth = Spring.sum(panwidthr, Spring.minus(xvalue));
Spring ypandisp = Spring.sum(yyvalue, Spring.minus(Spring.sum(xvalue,panheight)));
Spring dxvalue = spring2.getConstraint(SpringLayout.WEST, dimension);
Spring dyvalue = spring2.getConstraint(SpringLayout.NORTH, dimension);
//text parameters
Spring txx = Spring.constant(tx);
Spring tyy = Spring.constant(ty);
Spring twidth = Spring.constant(twid);
Spring theight = Spring.constant(thei);
//button parameters
JButton up = new JButton();
Spring b1x = Spring.sum(txx,twidth);
Spring b1width = Spring.constant(bwid);
Spring b1height = Spring.constant(bhei);
Spring b1y = Spring.sum(tyy,b1height);
Spring b2x = Spring.sum(b1x, Spring.sum(b1x,b1width));
//text1 x position
Spring t1xx = Spring.sum(b2x,Spring.minus(twidth));
Spring t3x = Spring.sum(b2x, Spring.sum(txx,b1width));
Spring b3x = Spring.sum(t3x,twidth);
Spring t4x = Spring.sum(b3x,Spring.sum(txx,b1width));
Spring b4x = Spring.sum(b3x,Spring.sum(b1x,b1width));
Spring t5x = Spring.sum(b4x,Spring.sum(txx,b1width));
Spring b5x = Spring.sum(b4x,Spring.sum(b1x,b1width));
Spring t6x = Spring.sum(b5x,Spring.sum(txx,b1width));
Spring b6x = Spring.sum(b5x,Spring.sum(b1x,b1width));
Spring t7x = Spring.sum(b6x,Spring.sum(txx,b1width));
Spring b7x = Spring.sum(b6x,Spring.sum(b1x,b1width));
//Adding features to panel
TitledBorder dampdim = new TitledBorder("Damper Dimensions");
dimension.setBorder(dampdim);
dimension.setLayout(spring2);
//Adding features to L up button
up.setText("UP");
up.setFont( new Font( "UP", Font.BOLD, 2));
up.addActionListener(new T1C());
buttons[1].addActionListener(new T2C());
buttons[2].addActionListener(new T3C());
buttons[3].addActionListener(new T4C());
buttons[4].addActionListener(new T5C());
buttons[5].addActionListener(new T6C());
buttons[6].addActionListener(new T7C());
buttons[7].addActionListener(new T8C());
buttons[8].addActionListener(new T9C());
buttons[9].addActionListener(new T10C());
buttons[10].addActionListener(new T11C());
buttons[11].addActionListener(new T12C());
buttons[12].addActionListener(new T13C());
buttons[13].addActionListener(new T14C());
//Component positioning
c.add(dimension);
spring.getConstraints(dimension).setX(xvalue);
spring.getConstraints(dimension).setY(ypandisp);
spring.getConstraints(dimension).setWidth(panwidth);
spring.getConstraints(dimension).setHeight(panheight);
dimension.add(Lfield);
spring2.getConstraints(Lfield).setX(txx);
spring2.getConstraints(Lfield).setY(tyy);
spring2.getConstraints(Lfield).setWidth(twidth);
spring2.getConstraints(Lfield).setHeight(theight);
dimension.add(up);
spring2.getConstraints(up).setX(b1x);
spring2.getConstraints(up).setY(tyy);
spring2.getConstraints(up).setWidth(b1width);
spring2.getConstraints(up).setHeight(b1height);
dimension.add(buttons[1]);
spring2.getConstraints(buttons[1]).setX(b1x);
spring2.getConstraints(buttons[1]).setY(b1y);
spring2.getConstraints(buttons[1]).setWidth(b1width);
spring2.getConstraints(buttons[1]).setHeight(b1height);
dimension.add(Rfield);
spring2.getConstraints(Rfield).setX(t1xx);
spring2.getConstraints(Rfield).setY(tyy);
spring2.getConstraints(Rfield).setWidth(twidth);
spring2.getConstraints(Rfield).setHeight(theight);
dimension.add(buttons[2]);
spring2.getConstraints(buttons[2]).setX(b2x);
spring2.getConstraints(buttons[2]).setY(tyy);
spring2.getConstraints(buttons[2]).setWidth(b1width);
spring2.getConstraints(buttons[2]).setHeight(b1height);
dimension.add(buttons[3]);
spring2.getConstraints(buttons[3]).setX(b2x);
spring2.getConstraints(buttons[3]).setY(b1y);
spring2.getConstraints(buttons[3]).setWidth(b1width);
spring2.getConstraints(buttons[3]).setHeight(b1height);
dimension.add(rfield);
spring2.getConstraints(rfield).setX(t3x);
spring2.getConstraints(rfield).setY(tyy);
spring2.getConstraints(rfield).setWidth(twidth);
spring2.getConstraints(rfield).setHeight(theight);
dimension.add(buttons[4]);
spring2.getConstraints(buttons[4]).setX(b3x);
spring2.getConstraints(buttons[4]).setY(tyy);
spring2.getConstraints(buttons[4]).setWidth(b1width);
spring2.getConstraints(buttons[4]).setHeight(b1height);
dimension.add(buttons[5]);
spring2.getConstraints(buttons[5]).setX(b3x);
spring2.getConstraints(buttons[5]).setY(b1y);
spring2.getConstraints(buttons[5]).setWidth(b1width);
spring2.getConstraints(buttons[5]).setHeight(b1height);
dimension.add(lfield);
spring2.getConstraints(lfield).setX(t4x);
spring2.getConstraints(lfield).setY(tyy);
spring2.getConstraints(lfield).setWidth(twidth);
spring2.getConstraints(lfield).setHeight(theight);
dimension.add(buttons[6]);
spring2.getConstraints(buttons[6]).setX(b4x);
spring2.getConstraints(buttons[6]).setY(tyy);
spring2.getConstraints(buttons[6]).setWidth(b1width);
spring2.getConstraints(buttons[6]).setHeight(b1height);
dimension.add(buttons[7]);
spring2.getConstraints(buttons[7]).setX(b4x);
spring2.getConstraints(buttons[7]).setY(b1y);
spring2.getConstraints(buttons[7]).setWidth(b1width);
spring2.getConstraints(buttons[7]).setHeight(b1height);
dimension.add(tfield);
spring2.getConstraints(tfield).setX(t5x);
spring2.getConstraints(tfield).setY(tyy);
spring2.getConstraints(tfield).setWidth(twidth);
spring2.getConstraints(tfield).setHeight(theight);
dimension.add(buttons[8]);
spring2.getConstraints(buttons[8]).setX(b5x);
spring2.getConstraints(buttons[8]).setY(tyy);
spring2.getConstraints(buttons[8]).setWidth(b1width);
spring2.getConstraints(buttons[8]).setHeight(b1height);
dimension.add(buttons[9]);
spring2.getConstraints(buttons[9]).setX(b5x);
spring2.getConstraints(buttons[9]).setY(b1y);
spring2.getConstraints(buttons[9]).setWidth(b1width);
spring2.getConstraints(buttons[9]).setHeight(b1height);
dimension.add(Hfield);
spring2.getConstraints(Hfield).setX(t6x);
spring2.getConstraints(Hfield).setY(tyy);
spring2.getConstraints(Hfield).setWidth(twidth);
spring2.getConstraints(Hfield).setHeight(theight);
dimension.add(buttons[10]);
spring2.getConstraints(buttons[10]).setX(b6x);
spring2.getConstraints(buttons[10]).setY(tyy);
spring2.getConstraints(buttons[10]).setWidth(b1width);
spring2.getConstraints(buttons[10]).setHeight(b1height);
dimension.add(buttons[11]);
spring2.getConstraints(buttons[11]).setX(b6x);
spring2.getConstraints(buttons[11]).setY(b1y);
spring2.getConstraints(buttons[11]).setWidth(b1width);
spring2.getConstraints(buttons[11]).setHeight(b1height);
dimension.add(hfield);
spring2.getConstraints(hfield).setX(t7x);
spring2.getConstraints(hfield).setY(tyy);
spring2.getConstraints(hfield).setWidth(twidth);
spring2.getConstraints(hfield).setHeight(theight);
dimension.add(buttons[12]);
spring2.getConstraints(buttons[12]).setX(b7x);
spring2.getConstraints(buttons[12]).setY(tyy);
spring2.getConstraints(buttons[12]).setWidth(b1width);
spring2.getConstraints(buttons[12]).setHeight(b1height);
dimension.add(buttons[13]);
spring2.getConstraints(buttons[13]).setX(b7x);
spring2.getConstraints(buttons[13]).setY(b1y);
spring2.getConstraints(buttons[13]).setWidth(b1width);
spring2.getConstraints(buttons[13]).setHeight(b1height);
}
//Event Handlers for buttons
class T1C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
x = (int)(Integer.parseInt(Lfield.getText())) + 1;
Lfield.setText(x + "");
}
}
class T2C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
x = (int)(Integer.parseInt(Lfield.getText())) - 1;
Lfield.setText(x + "");
}
}
class T3C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
a = (int)(Integer.parseInt(Rfield.getText())) + 1;
Rfield.setText(a + "");
}
}
class T4C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
a = (int)(Integer.parseInt(Rfield.getText())) - 1;
Rfield.setText(a + "");
}
}
class T5C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
b = (int)(Integer.parseInt(rfield.getText())) + 1;
rfield.setText(b + "");
}
}
class T6C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
b = (int)(Integer.parseInt(rfield.getText())) - 1;
rfield.setText(b + "");
}
}
class T7C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
c = (int)(Integer.parseInt(lfield.getText())) + 1;
lfield.setText(c + "");
}
}
class T8C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
c = (int)(Integer.parseInt(lfield.getText())) - 1;
lfield.setText(c + "");
}
}
class T9C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
d = (int)(Integer.parseInt(tfield.getText())) + 1;
tfield.setText(d + "");
}
}
class T10C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
d = (int)(Integer.parseInt(tfield.getText())) - 1;
tfield.setText(d + "");
}
}
class T11C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
q = (int)(Integer.parseInt(Hfield.getText())) + 1;
Hfield.setText(q + "");
}
}
class T12C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
q = (int)(Integer.parseInt(Hfield.getText())) - 1;
Hfield.setText(q + "");
}
}
class T13C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
f = (int)(Integer.parseInt(hfield.getText())) + 1;
hfield.setText(f + "");
}
}
class T14C implements ActionListener
{
public void actionPerformed(ActionEvent e) {
f = (int)(Integer.parseInt(hfield.getText())) - 1;
hfield.setText(f + "");
}
}
//figure out how to call this subroutine only when button is clicked
public static void main( String[] argv ) {
JFrame frame = new JFrame( "Transform" );
frame.addWindowListener( new WindowAdapter(){
public void windowClosing( WindowEvent e ){
System.exit( 0 );
}
});
JApplet applet = new Shapeshift();
frame.getContentPane().add( BorderLayout.CENTER, applet );
applet.init();
frame.setSize( 550, 400 );
frame.setVisible(true);
}
}

