Pokušavam da napravim jednu animaciju koja simulira čekanje u redu na šalteru: ljudi čekaju, ispred njih su 3 šaltera i oni prilaze slobodnom. Simulirala sam to tako što sam crtala kružiće koji se pomeraju ka velikom krugu (on simulira šalter) i sada bih da te kružiće kontrolišem, tj. da omogućim pauziranje animacije, kao i da kružići dolaze do slobodnog šaltera. Možete pokrenuti i pogledati navedeni kod:
Evo koda za aplet:
Code:
package org.me.log;
import javax.swing.JApplet;
public class LogAplet extends JApplet {
@Override
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
// TODO overwrite start(), stop() and destroy() methods
private void initComponents() {
panel1 = new org.me.log.LogPanel1();
slider1 = new javax.swing.JSlider();
slider4 = new javax.swing.JSlider();
slider2 = new javax.swing.JSlider();
slider5 = new javax.swing.JSlider();
slider3 = new javax.swing.JSlider();
slider6 = new javax.swing.JSlider();
label1 = new javax.swing.JLabel();
label2 = new javax.swing.JLabel();
label3 = new javax.swing.JLabel();
label4 = new javax.swing.JLabel();
label5 = new javax.swing.JLabel();
label6 = new javax.swing.JLabel();
panel2 = new org.me.log.LogPanel2();
panel1.setBackground(new java.awt.Color(255, 255, 255));
panel1.setBorder(new javax.swing.border.LineBorder(javax.swing.UIManager.getDefaults().getColor("Slider.foreground"), 2, true));
javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1);
panel1.setLayout(panel1Layout);
panel1Layout.setHorizontalGroup(
panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 288, Short.MAX_VALUE)
);
panel1Layout.setVerticalGroup(
panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 367, Short.MAX_VALUE)
);
label1.setFont(new java.awt.Font("Tahoma", 1, 14));
label1.setText("Broj sati");
label2.setFont(new java.awt.Font("Tahoma", 1, 14));
label2.setText("Nervoza radnika");
label3.setFont(new java.awt.Font("Tahoma", 1, 14));
label3.setText("Gužva");
label4.setFont(new java.awt.Font("Tahoma", 1, 14));
label4.setText("Broj sati");
label5.setFont(new java.awt.Font("Tahoma", 1, 14));
label5.setText("Nervoza radnika");
label6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
label6.setText("Gužva");
panel2.setBackground(new java.awt.Color(255, 255, 255));
panel2.setBorder(new javax.swing.border.LineBorder(javax.swing.UIManager.getDefaults().getColor("Slider.foreground"), 2, true));
slider1.setMajorTickSpacing(10);
slider1.setPaintLabels(true);
slider1.setPaintTicks(true);
slider1.setValue(20);
slider1.setMaximum(40);
slider2.setMajorTickSpacing(25);
slider2.setPaintLabels(true);
slider2.setPaintTicks(true);
slider2.setValue(50);
slider2.setMaximum(100);
slider3.setMajorTickSpacing(25);
slider3.setPaintLabels(true);
slider3.setPaintTicks(true);
slider3.setValue(50);
slider3.setMaximum(100);
slider4.setMajorTickSpacing(10);
slider4.setPaintLabels(true);
slider4.setPaintTicks(true);
slider4.setValue(20);
slider4.setMaximum(40);
slider5.setMajorTickSpacing(25);
slider5.setPaintLabels(true);
slider5.setPaintTicks(true);
slider5.setValue(50);
slider5.setMaximum(100);
slider6.setMajorTickSpacing(25);
slider6.setPaintLabels(true);
slider6.setPaintTicks(true);
slider6.setValue(50);
slider6.setMaximum(100);
javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2);
panel2.setLayout(panel2Layout);
panel2Layout.setHorizontalGroup(
panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 288, Short.MAX_VALUE)
);
panel2Layout.setVerticalGroup(
panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 367, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(slider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(slider2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label1)
.addComponent(label2)
.addComponent(label3)
.addComponent(slider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label6)
.addComponent(label5)
.addComponent(label4)
.addComponent(slider5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(slider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(slider6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(panel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(label1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(label4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
}// </editor-fold>
// Variables declaration - do not modify
public javax.swing.JLabel label1;
public javax.swing.JLabel label2;
public javax.swing.JLabel label3;
public javax.swing.JLabel label4;
public javax.swing.JLabel label5;
public javax.swing.JLabel label6;
public javax.swing.JPanel panel1;
public javax.swing.JPanel panel2;
static public javax.swing.JSlider slider1;
static public javax.swing.JSlider slider2;
static public javax.swing.JSlider slider3;
static public javax.swing.JSlider slider4;
static public javax.swing.JSlider slider5;
static public javax.swing.JSlider slider6;
// End of variables declaration
}
package org.me.log;
import javax.swing.JApplet;
public class LogAplet extends JApplet {
@Override
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
// TODO overwrite start(), stop() and destroy() methods
private void initComponents() {
panel1 = new org.me.log.LogPanel1();
slider1 = new javax.swing.JSlider();
slider4 = new javax.swing.JSlider();
slider2 = new javax.swing.JSlider();
slider5 = new javax.swing.JSlider();
slider3 = new javax.swing.JSlider();
slider6 = new javax.swing.JSlider();
label1 = new javax.swing.JLabel();
label2 = new javax.swing.JLabel();
label3 = new javax.swing.JLabel();
label4 = new javax.swing.JLabel();
label5 = new javax.swing.JLabel();
label6 = new javax.swing.JLabel();
panel2 = new org.me.log.LogPanel2();
panel1.setBackground(new java.awt.Color(255, 255, 255));
panel1.setBorder(new javax.swing.border.LineBorder(javax.swing.UIManager.getDefaults().getColor("Slider.foreground"), 2, true));
javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1);
panel1.setLayout(panel1Layout);
panel1Layout.setHorizontalGroup(
panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 288, Short.MAX_VALUE)
);
panel1Layout.setVerticalGroup(
panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 367, Short.MAX_VALUE)
);
label1.setFont(new java.awt.Font("Tahoma", 1, 14));
label1.setText("Broj sati");
label2.setFont(new java.awt.Font("Tahoma", 1, 14));
label2.setText("Nervoza radnika");
label3.setFont(new java.awt.Font("Tahoma", 1, 14));
label3.setText("Gužva");
label4.setFont(new java.awt.Font("Tahoma", 1, 14));
label4.setText("Broj sati");
label5.setFont(new java.awt.Font("Tahoma", 1, 14));
label5.setText("Nervoza radnika");
label6.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
label6.setText("Gužva");
panel2.setBackground(new java.awt.Color(255, 255, 255));
panel2.setBorder(new javax.swing.border.LineBorder(javax.swing.UIManager.getDefaults().getColor("Slider.foreground"), 2, true));
slider1.setMajorTickSpacing(10);
slider1.setPaintLabels(true);
slider1.setPaintTicks(true);
slider1.setValue(20);
slider1.setMaximum(40);
slider2.setMajorTickSpacing(25);
slider2.setPaintLabels(true);
slider2.setPaintTicks(true);
slider2.setValue(50);
slider2.setMaximum(100);
slider3.setMajorTickSpacing(25);
slider3.setPaintLabels(true);
slider3.setPaintTicks(true);
slider3.setValue(50);
slider3.setMaximum(100);
slider4.setMajorTickSpacing(10);
slider4.setPaintLabels(true);
slider4.setPaintTicks(true);
slider4.setValue(20);
slider4.setMaximum(40);
slider5.setMajorTickSpacing(25);
slider5.setPaintLabels(true);
slider5.setPaintTicks(true);
slider5.setValue(50);
slider5.setMaximum(100);
slider6.setMajorTickSpacing(25);
slider6.setPaintLabels(true);
slider6.setPaintTicks(true);
slider6.setValue(50);
slider6.setMaximum(100);
javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2);
panel2.setLayout(panel2Layout);
panel2Layout.setHorizontalGroup(
panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 288, Short.MAX_VALUE)
);
panel2Layout.setVerticalGroup(
panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 367, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(slider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(slider2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label1)
.addComponent(label2)
.addComponent(label3)
.addComponent(slider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(label6)
.addComponent(label5)
.addComponent(label4)
.addComponent(slider5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(slider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(slider6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(panel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(label1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(label4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(label6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slider6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
}// </editor-fold>
// Variables declaration - do not modify
public javax.swing.JLabel label1;
public javax.swing.JLabel label2;
public javax.swing.JLabel label3;
public javax.swing.JLabel label4;
public javax.swing.JLabel label5;
public javax.swing.JLabel label6;
public javax.swing.JPanel panel1;
public javax.swing.JPanel panel2;
static public javax.swing.JSlider slider1;
static public javax.swing.JSlider slider2;
static public javax.swing.JSlider slider3;
static public javax.swing.JSlider slider4;
static public javax.swing.JSlider slider5;
static public javax.swing.JSlider slider6;
// End of variables declaration
}
Ovo je panel na kome je nacrtan sadržaj:
Code:
package org.me.log;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class LogPanel2 extends JPanel {
int i;
// timer delay: equivalent to the Thread.sleep time
private static final int TIMER_DELAY = 1;
// how far to move in x dimension with each loop of timer
int DELTA_X = 1;
// the images x & y locations
private int x2 = 130;
private int y2 = 330;
private int y21 = y2-50;
private int y22=y2-100;
private int y23=y2-150;
private int y24=y2-200;
public LogPanel2() {
try {
// first get our image
} catch (Exception e) {
e.printStackTrace();
}
// create and start the Swing Timer
new Timer(TIMER_DELAY, new TimerListener()).start();
}
// all paintComponent does is paint -- nothing else
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
g.drawString("1", 42, 20);
g.drawString("2", 137, 20);
g.drawString("3", 232, 20);
g.setColor(new Color (178, 34, 34));
g.fillOval(30, 50, 30, 30);
g.fillOval(125, 55, 30, 30);
g.fillOval(220, 50, 30, 30);
setBackground (Color.white);
g.setColor(new Color (220,220,220));
g.fillRect(130,100,20,250);
g.setColor(new Color (205,92,92));
if (y2 <= 330 && y2 >= 85) {
g.fillOval( x2, y2, 20, 20);
g.fillOval( x2, y21, 20,20);
g.fillOval( x2, y22, 20,20);
g.fillOval( x2, y23, 20,20);
g.fillOval( x2, y24, 20,20);
}
else {
System.out.println("y2= " + y2); // Show the value that fails if test
}
}
private class TimerListener implements ActionListener {
// is called every TIMER_DELAY ms
public void actionPerformed(ActionEvent e) {
y2 -= DELTA_X;
y21 -= DELTA_X;
y22 -= DELTA_X;
y23 -= DELTA_X;
y24 -= DELTA_X;
if (y2<85){
y2=330;
}
if (y21<85){
y21=330;
}
if (y22<85){
y22=330;
}
if (y23<85){
y23=330;
}
if (y24<85){
y24=330;
}
// ask JVM to paint this JPanel
LogPanel2.this.repaint();
}
}
}
package org.me.log;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class LogPanel2 extends JPanel {
int i;
// timer delay: equivalent to the Thread.sleep time
private static final int TIMER_DELAY = 1;
// how far to move in x dimension with each loop of timer
int DELTA_X = 1;
// the images x & y locations
private int x2 = 130;
private int y2 = 330;
private int y21 = y2-50;
private int y22=y2-100;
private int y23=y2-150;
private int y24=y2-200;
public LogPanel2() {
try {
// first get our image
} catch (Exception e) {
e.printStackTrace();
}
// create and start the Swing Timer
new Timer(TIMER_DELAY, new TimerListener()).start();
}
// all paintComponent does is paint -- nothing else
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
g.drawString("1", 42, 20);
g.drawString("2", 137, 20);
g.drawString("3", 232, 20);
g.setColor(new Color (178, 34, 34));
g.fillOval(30, 50, 30, 30);
g.fillOval(125, 55, 30, 30);
g.fillOval(220, 50, 30, 30);
setBackground (Color.white);
g.setColor(new Color (220,220,220));
g.fillRect(130,100,20,250);
g.setColor(new Color (205,92,92));
if (y2 <= 330 && y2 >= 85) {
g.fillOval( x2, y2, 20, 20);
g.fillOval( x2, y21, 20,20);
g.fillOval( x2, y22, 20,20);
g.fillOval( x2, y23, 20,20);
g.fillOval( x2, y24, 20,20);
}
else {
System.out.println("y2= " + y2); // Show the value that fails if test
}
}
private class TimerListener implements ActionListener {
// is called every TIMER_DELAY ms
public void actionPerformed(ActionEvent e) {
y2 -= DELTA_X;
y21 -= DELTA_X;
y22 -= DELTA_X;
y23 -= DELTA_X;
y24 -= DELTA_X;
if (y2<85){
y2=330;
}
if (y21<85){
y21=330;
}
if (y22<85){
y22=330;
}
if (y23<85){
y23=330;
}
if (y24<85){
y24=330;
}
// ask JVM to paint this JPanel
LogPanel2.this.repaint();
}
}
}
A ovo je kod drugog panela, čija ću svojstva tek dodavati:
Code:
package org.me.log;
import java.awt.Color;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class LogPanel1 extends JPanel {
// timer delay: equivalent to the Thread.sleep time
private static final int TIMER_DELAY = 1;
// how far to move in x dimension with each loop of timer
int DELTA_X = 1;
// the images x & y locations
private int x2 = 130;
private int y2 = 330;
private int y21 = y2-50;
private int y22=y2-100;
private int y23=y2-150;
private int y24=y2-200;
static int value1;
static int value2;
static int value3;
public LogPanel1(){
try {
// first get our image
} catch (Exception e) { // shame on me for combining exceptions :(
e.printStackTrace();
}
// create and start the Swing Timer
new Timer(TIMER_DELAY, new TimerListener()).start();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.blue);
value1=LogAplet.slider1.getValue();
value2=LogAplet.slider2.getValue();
value3=LogAplet.slider3.getValue();
g.setColor(Color.BLACK);
g.drawString("1", 42, 20);
g.drawString("2", 137, 20);
g.drawString("3", 232, 20);
g.setColor(new Color (220,220,220));
g.fillRect(35,100,20,230);
g.fillRect(130,100,20,230);
g.fillRect(225,100,20,230);
g.setColor(new Color (178, 34, 34));
g.fillOval(30, 50, 30, 30);
g.fillOval(125, 50, 30, 30);
g.fillOval(220, 50, 30, 30);
g.setColor(new Color (205,92,92));
g.fillOval(35, 250, 20, 20);
g.fillOval(35, 300, 20, 20);
g.fillOval(35, 200, 20, 20);
g.fillOval(35, 150, 20, 20);
g.fillOval(35, 100, 20, 20);
g.fillOval(130, 250, 20, 20);
g.fillOval(130, 300, 20, 20);
g.fillOval(130, 200, 20, 20);
g.fillOval(130, 150, 20, 20);
g.fillOval(130, 100, 20, 20);
g.fillOval(225, 250, 20, 20);
g.fillOval(225, 300, 20, 20);
g.fillOval(225, 200, 20, 20);
g.fillOval(225, 150, 20, 20);
g.fillOval(225, 100, 20, 20);
g.setColor(new Color (220,220,220));
g.fillRect(130,100,20,250);
g.setColor(new Color (205,92,92));
if (y2 <= 330 && y2 >= 85) {
g.fillOval( x2, y2, 20, 20);
g.fillOval( x2, y21, 20,20);
g.fillOval( x2, y22, 20,20);
g.fillOval( x2, y23, 20,20);
g.fillOval( x2, y24, 20,20);
repaint();
}}
private class TimerListener implements ActionListener {
// is called every TIMER_DELAY ms
public void actionPerformed(ActionEvent e) {
y2 -= DELTA_X;
y21 -= DELTA_X;
y22 -= DELTA_X;
y23 -= DELTA_X;
y24 -= DELTA_X;
if (y2<80){
y2=330;
}
if (y21<80){
y21=330;
}
if (y22<80){
y22=330;
}
if (y23<80){
y23=330;
}
if (y24<80){
y24=330;
}
// ask JVM to paint this JPanel
LogPanel1.this.repaint();
}
}
}
package org.me.log;
import java.awt.Color;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class LogPanel1 extends JPanel {
// timer delay: equivalent to the Thread.sleep time
private static final int TIMER_DELAY = 1;
// how far to move in x dimension with each loop of timer
int DELTA_X = 1;
// the images x & y locations
private int x2 = 130;
private int y2 = 330;
private int y21 = y2-50;
private int y22=y2-100;
private int y23=y2-150;
private int y24=y2-200;
static int value1;
static int value2;
static int value3;
public LogPanel1(){
try {
// first get our image
} catch (Exception e) { // shame on me for combining exceptions :(
e.printStackTrace();
}
// create and start the Swing Timer
new Timer(TIMER_DELAY, new TimerListener()).start();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.blue);
value1=LogAplet.slider1.getValue();
value2=LogAplet.slider2.getValue();
value3=LogAplet.slider3.getValue();
g.setColor(Color.BLACK);
g.drawString("1", 42, 20);
g.drawString("2", 137, 20);
g.drawString("3", 232, 20);
g.setColor(new Color (220,220,220));
g.fillRect(35,100,20,230);
g.fillRect(130,100,20,230);
g.fillRect(225,100,20,230);
g.setColor(new Color (178, 34, 34));
g.fillOval(30, 50, 30, 30);
g.fillOval(125, 50, 30, 30);
g.fillOval(220, 50, 30, 30);
g.setColor(new Color (205,92,92));
g.fillOval(35, 250, 20, 20);
g.fillOval(35, 300, 20, 20);
g.fillOval(35, 200, 20, 20);
g.fillOval(35, 150, 20, 20);
g.fillOval(35, 100, 20, 20);
g.fillOval(130, 250, 20, 20);
g.fillOval(130, 300, 20, 20);
g.fillOval(130, 200, 20, 20);
g.fillOval(130, 150, 20, 20);
g.fillOval(130, 100, 20, 20);
g.fillOval(225, 250, 20, 20);
g.fillOval(225, 300, 20, 20);
g.fillOval(225, 200, 20, 20);
g.fillOval(225, 150, 20, 20);
g.fillOval(225, 100, 20, 20);
g.setColor(new Color (220,220,220));
g.fillRect(130,100,20,250);
g.setColor(new Color (205,92,92));
if (y2 <= 330 && y2 >= 85) {
g.fillOval( x2, y2, 20, 20);
g.fillOval( x2, y21, 20,20);
g.fillOval( x2, y22, 20,20);
g.fillOval( x2, y23, 20,20);
g.fillOval( x2, y24, 20,20);
repaint();
}}
private class TimerListener implements ActionListener {
// is called every TIMER_DELAY ms
public void actionPerformed(ActionEvent e) {
y2 -= DELTA_X;
y21 -= DELTA_X;
y22 -= DELTA_X;
y23 -= DELTA_X;
y24 -= DELTA_X;
if (y2<80){
y2=330;
}
if (y21<80){
y21=330;
}
if (y22<80){
y22=330;
}
if (y23<80){
y23=330;
}
if (y24<80){
y24=330;
}
// ask JVM to paint this JPanel
LogPanel1.this.repaint();
}
}
}
Trenutno vršim podešavanja i upravljanje simulacijom u LogPane2. Mislim da tu treba podešavati ponašanje animacije, tj. definisati pomeranje ovih elemenata, samo nisam sigurna kako. Nadam se da neko može pomoći.