Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.jcdj1996.final03;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import javax.swing.*;
- import javax.swing.event.ChangeEvent;
- import javax.swing.event.ChangeListener;
- import lejos.nxt.Sound;
- public class Display implements ActionListener, ChangeListener{
- static Robot r1 = new Robot();
- static MoveSet m1 = new MoveSet();
- static MyPanel p1 = new MyPanel();
- static JFrame panel;
- static JPanel contentPane; //holds all other JPanels
- static JPanel buttons; //preprogrammed moves
- static JPanel sliders; //speed and steering
- static JButton figure8; //triggers figure8
- static JButton fireButton; //fire from GUI
- static JButton horn; //Play horn
- static JSlider speedSlide; //Speed Slider
- static JSlider steerSlide; //Steering Slider
- public void init(){
- panel = new JFrame("Rover Controller");
- panel.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- // the box layout puts objects in a vertical column
- contentPane = new JPanel();
- contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.PAGE_AXIS));
- contentPane.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
- contentPane.setBackground(Color.blue);
- // Add content pane to frame
- panel.setContentPane(contentPane);
- contentPane.setLayout(new GridLayout(1,0));
- buttons = new JPanel();
- buttons.setLayout(new BoxLayout(buttons,BoxLayout.PAGE_AXIS));
- buttons.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
- buttons.setBackground(Color.WHITE);
- buttons.setLayout(new GridLayout(0,1));
- contentPane.add(buttons);
- sliders = new JPanel();
- sliders.setLayout(new BoxLayout(sliders,BoxLayout.PAGE_AXIS));
- sliders.setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
- sliders.setBackground(Color.GREEN);
- sliders.setLayout(new GridLayout(0,1));
- contentPane.add(sliders);
- contentPane.add(new MyPanel()); //add paint surface (far right)
- // Size and then display the window.
- panel.setSize(800,500);
- panel.setLocation(300,100);
- panel.setVisible(true);
- //Buttons
- figure8 = new JButton("Figure Eight");
- buttons.add(figure8);
- figure8.addActionListener(this);
- fireButton = new JButton("Fire (trigger)");
- buttons.add(fireButton);
- fireButton.addActionListener(this);
- horn = new JButton("Horn (Button 3)");
- horn.addActionListener(this);
- buttons.add(horn);
- //Sliders
- speedSlide = new JSlider(JSlider.VERTICAL, -720,720, 0);
- speedSlide.addChangeListener(this);
- speedSlide.setMajorTickSpacing(180);
- speedSlide.setPaintTicks(true);
- speedSlide.setPaintLabels(true);
- speedSlide.setSnapToTicks(true);
- speedSlide.setName("Speed");
- sliders.add(speedSlide);
- steerSlide = new JSlider(JSlider.HORIZONTAL,-10, 10, 0);
- steerSlide.addChangeListener(this);
- steerSlide.setMajorTickSpacing(1);
- steerSlide.setPaintTicks(true);
- steerSlide.setPaintLabels(false);
- steerSlide.setSnapToTicks(true);
- sliders.add(steerSlide);
- }
- public void actionPerformed(ActionEvent arg0) {
- if(arg0.getSource()==figure8)
- {
- m1.figure8(); //activate figure 8
- }
- if(arg0.getSource()==fireButton) //fire button is pressed
- {
- r1.fire();
- }
- if(arg0.getSource() == horn)
- {
- Sound.playTone(500, 500); //play tone from robot speaker
- }
- }
- public void stateChanged(ChangeEvent a) {
- if(a.getSource()==speedSlide)
- {
- r1.setSpeed(speedSlide.getValue()*-1); //drive motor is reversed, value must be flipped
- }
- if(a.getSource()==steerSlide)
- {
- r1.turn(steerSlide.getValue()); //turn to the value of the steering slider
- }
- }
- }
- class MyPanel extends JPanel implements ActionListener{
- private static final long serialVersionUID = 1L;
- Timer timer1 = new Timer(10,this);
- public static int xpos=45,ypos=45;
- public MyPanel() {
- setBorder(BorderFactory.createLineBorder(Color.black));
- timer1.start();
- }
- public Dimension getPreferredSize() {
- return new Dimension(250,200);
- }
- public void paintComponent(Graphics g) {
- super.paintComponent(g);
- //JStick graphics
- g.setColor(Color.BLACK);
- g.fillRect(0, 0, 1000, 1000);
- if(final03.JStickAvail==false)
- {
- g.setColor(Color.BLUE);
- g.drawString("No Joystick Found", 15,45);
- }else{
- g.setColor(Color.WHITE);
- g.drawLine(50,0,50,100); //grid for JS position
- g.drawLine(0,50,100,50);
- g.setColor(Color.RED);
- g.fillOval(xpos, ypos, 10, 10); //circle for JS position
- g.drawString("Joystick input", 15, 111);
- }
- }
- public void actionPerformed(ActionEvent arg0) {
- repaint(); //repaint on timer
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement