add files
This commit is contained in:
parent
5523fe0240
commit
9ff7f6c8fd
@ -1,2 +1,3 @@
|
|||||||
# ProcessingSwingDemo
|
# ProcessingSwingDemo
|
||||||
|
|
||||||
|
A way to integrate Swing and Processing. Seems to be deprecated but an interesting entry point for rapid prototyping of applications.
|
BIN
core-2.2.1.jar
Normal file
BIN
core-2.2.1.jar
Normal file
Binary file not shown.
23
src/GUI.java
Normal file
23
src/GUI.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Toolkit;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
public class GUI extends JFrame{
|
||||||
|
private ShakerPanel myShakerPanel;
|
||||||
|
|
||||||
|
public GUI() {
|
||||||
|
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||||
|
myShakerPanel = new ShakerPanel();
|
||||||
|
myShakerPanel.init();
|
||||||
|
this.add(myShakerPanel);
|
||||||
|
}
|
||||||
|
public static void main(String[] args) {
|
||||||
|
GUI mainPanel = new GUI();
|
||||||
|
|
||||||
|
mainPanel.pack();
|
||||||
|
//mainPanel.setSize(400, 400);
|
||||||
|
mainPanel.setResizable(false);
|
||||||
|
mainPanel.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
76
src/ShakerController.java
Normal file
76
src/ShakerController.java
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.*;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
public class ShakerController extends JFrame {
|
||||||
|
|
||||||
|
private ShakerPanel myShakerPanel;
|
||||||
|
private JTextField myShiftField;
|
||||||
|
private JButton myStartButton, myPauseButton;
|
||||||
|
|
||||||
|
// continued from previous slide
|
||||||
|
class StartButtonListener implements ActionListener {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent ae) {
|
||||||
|
myShakerPanel.setRunning(true);
|
||||||
|
myStartButton.setEnabled(false);
|
||||||
|
myPauseButton.setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class PauseButtonListener implements ActionListener {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent ae) {
|
||||||
|
myShakerPanel.setRunning(false);
|
||||||
|
myStartButton.setEnabled(true);
|
||||||
|
myPauseButton.setEnabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ShiftFieldListener implements ActionListener {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent ae) {
|
||||||
|
try {
|
||||||
|
myShakerPanel.setShift(Integer.parseInt(myShiftField.getText()));
|
||||||
|
} catch (Exception e) {
|
||||||
|
myShiftField.setText("Invalid shift value. Please try again.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShakerController() {
|
||||||
|
setTitle("Shaker");
|
||||||
|
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||||
|
setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
myShakerPanel = new ShakerPanel();
|
||||||
|
myShakerPanel.init();
|
||||||
|
add(myShakerPanel, BorderLayout.NORTH);
|
||||||
|
|
||||||
|
// a control panel
|
||||||
|
JPanel controlPanel = new JPanel(new FlowLayout());
|
||||||
|
myStartButton = new JButton("Start");
|
||||||
|
myStartButton.setEnabled(false);
|
||||||
|
myStartButton.addActionListener(new StartButtonListener());
|
||||||
|
controlPanel.add(myStartButton);
|
||||||
|
myPauseButton = new JButton("Pause");
|
||||||
|
myPauseButton.setEnabled(true);
|
||||||
|
myPauseButton.addActionListener(new PauseButtonListener());
|
||||||
|
controlPanel.add(myPauseButton);
|
||||||
|
controlPanel.add(new JLabel("Shift factor:"));
|
||||||
|
myShiftField = new JTextField(3);
|
||||||
|
myShiftField.setText(String.format("%d", myShakerPanel.getShift()));
|
||||||
|
controlPanel.add(myShiftField);
|
||||||
|
myShiftField.addActionListener(new ShiftFieldListener());
|
||||||
|
add(controlPanel, BorderLayout.CENTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
ShakerController controller = new ShakerController();
|
||||||
|
controller.setResizable(false);
|
||||||
|
controller.pack();
|
||||||
|
controller.setVisible(true);
|
||||||
|
}
|
||||||
|
} // closes ShakerController class declaration
|
||||||
|
|
57
src/ShakerPanel.java
Normal file
57
src/ShakerPanel.java
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
import processing.core.PApplet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ShakerPanel1 is a simple Java encapsulation of a shaker animation from Processing.
|
||||||
|
* It draws a shaking circle and allows the user to reposition the circle using a mouse click.
|
||||||
|
*
|
||||||
|
* @author kvlinden
|
||||||
|
* @version Fall, 2009
|
||||||
|
*/
|
||||||
|
public class ShakerPanel extends PApplet {
|
||||||
|
|
||||||
|
private static final int SIZE = 300;
|
||||||
|
private int myX, myY, myShift;
|
||||||
|
private boolean myRunningStatus;
|
||||||
|
|
||||||
|
//constructor
|
||||||
|
public ShakerPanel() {
|
||||||
|
myX = myY = SIZE / 2;
|
||||||
|
myShift = 10;
|
||||||
|
myRunningStatus = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setup() {
|
||||||
|
size(SIZE, SIZE);
|
||||||
|
smooth();
|
||||||
|
background(255);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void draw() {
|
||||||
|
if (myRunningStatus) {
|
||||||
|
background(255);
|
||||||
|
strokeWeight(2);
|
||||||
|
ellipse(myX + random(-myShift / 2, myShift / 2),
|
||||||
|
myY + random(-myShift / 2, myShift / 2), 50, 50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mousePressed() {
|
||||||
|
myX = mouseX;
|
||||||
|
myY = mouseY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getShift() {
|
||||||
|
return myShift;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShift(int shift) throws Exception {
|
||||||
|
if (shift < 0) {
|
||||||
|
throw new Exception("invalid shift value: " + shift);
|
||||||
|
}
|
||||||
|
myShift = shift;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRunning(boolean status) {
|
||||||
|
myRunningStatus = status;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user