| TestDisplay.java |
package graphics.carl;
// This application demonstrates graphics, lookup animation, timer,
// and interactive triggering of display events.
// doug Lyon, 4/12/01
//package doug;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestDisplay extends javax.swing.JFrame {
private javax.swing.JPanel panControls;
private javax.swing.JPanel panDisplay;
private javax.swing.JSlider sldTimerSet;
private javax.swing.JSlider sld_nSet;
private int tdelta; //timer interval
// Container c;
int iOffset = 0; // offset into index of color table
ColorArray myLUT; // instance of color table class
// Geometric array parameters
boolean timerON = false;
// Carl use paintComponent as in chapter 13!!!
/* Note: JButtons and JLabels are flakey, don't show up on initialization!
JButton btnCycle = new JButton("Cycle");
JButton btnTimer = new JButton(" Start Timer");
JLabel lblBlank = new JLabel( "lblBlank");
JButton btnBlank = new JButton("btnBlank");
*/
// default constructor
public TestDisplay() {
super("graphics.carl.TestDisplay");
java.awt.Container c = getContentPane();
//------------------------------------------
// set up control panel and attach to JFrame
panControls = new javax.swing.JPanel();
panControls.setLayout(new java.awt.GridLayout(2, 2));
/*
panControls.add(
new graphics.carl.CommandButton("Cycle"){
public void gui.run() {
cycleColor();
}
}
);
*/
/* panControls.add(
new graphics.carl.ToggleCommandButton("Start Timer","Stop Timer"){
public void gui.run() {
toggleTimer();
}
}
);
*/
sldTimerSet = new javax.swing.JSlider(SwingConstants.HORIZONTAL, 100, 1000, 500);
sldTimerSet.createStandardLabels(100);
sldTimerSet.setMajorTickSpacing(100);
sldTimerSet.setPaintLabels(true);
sldTimerSet.setPaintTicks(true);
sldTimerSet.setInverted(true);
sldTimerSet.setPaintTrack(true);
sldTimerSet.addChangeListener(
new javax.swing.event.ChangeListener() {
public void stateChanged(ChangeEvent ce) {
tdelta = sldTimerSet.getValue();
myTimer.setDelay(tdelta);
}
}
);
panControls.add(sldTimerSet);
c.add(panControls, java.awt.BorderLayout.NORTH);
// Look! you can add a panel to a panel!!
javax.swing.JPanel pnlTest = new javax.swing.JPanel();
pnlTest.add(new javax.swing.JLabel("I'm here"));
c.add(pnlTest, java.awt.BorderLayout.SOUTH);
//------------------------------------------
// set up display panel and attach to JFrame
panDisplay = new javax.swing.JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
System.out.println("I am paintComponent");
/*
for ( int i = 0 ; i < n ; i++){
int colorIndex = iOffset+i;
g.setColor(myLUT.getcolorArray()[colorIndex%myLUT.getnumberOfColors()]);
x = xi[i];
y = yi[i];
g.fillOval( x, y, ovalRad, ovalRad);
g.setColor(myLUT.getcolorArray()[(colorIndex+n/2)%myLUT.getnumberOfColors()]);
g.drawOval( x, y, ovalRad, ovalRad);
}
*/
} // end paintComponent()
};
// panDisplay.setOpaque( false );
c.add(panDisplay, java.awt.BorderLayout.CENTER);
// setGeometry(n);
//------------------------------------
setSize(600, 600);
show();
//---------------------------
} // end constructor
javax.swing.Timer myTimer = new javax.swing.Timer(1000,
new ActionListener() {
public void actionPerformed(ActionEvent e) {
cycleColor();
}
}
);
// ------------------------------
public void cycleColor() {
iOffset++;
panDisplay.repaint();
}
public void toggleTimer() {
if (timerON) {
// myLUT.shuffleColors();
myTimer.stop();
timerON = false;
return;
}
timerON = true;
myTimer.start();
panDisplay.repaint();
}
public static void main(String args[]) {
TestDisplay td = new TestDisplay();
// graphics.carl.PointArray logpts = new graphics.carl.PointArray(4, 16, Point2D.Float(100f, 100f), 50f);
ColorArray colors = new ColorArray(4, 16, true);
System.out.println("JRingsJFrame main");
} // end main
}