im wondering of anyone can help me use the rotate method, i looked through previous questions and didnt find what i was looking for..
Code has been compacted so someelements might be missing.. screenshot below.
im currently adding and subtracting 10 from the line variables to rotate can anyone help me use the actual rotate method,,
Thanks in Advance..
public class Display extends JFrame{
private int Lx1 = CANVAS_WIDTH / 2; private int Mx1 = CANVAS_WIDTH / 2;
private int Ly1 = CANVAS_HEIGHT / 2; private int My1 = CANVAS_HEIGHT / 2;
private int Lx2 = CANVAS_WIDTH / 2; private int Mx2 = CANVAS_WIDTH / 2;
private int Ly2 = CANVAS_HEIGHT / 2; private int My2 = CANVAS_HEIGHT;
public Display() {
canvas = new DrawCanvas();
canvas.setPreferredSize(new Dimension(CANVAS_WIDTH, CANVAS_HEIGHT));
canvas.setLayout(new GridLayout(8, 4, 80, 10));
canvas.setComponentOrientation(ComponentOrientation.UNKNOWN);
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
Altitude = new JTextField("Altitude", 5); Altitude.setHorizontalAlignment(JTextField.CENTER);
Altitude.setEditable(false); Altitude.setOpaque(false);
Altitude.setFont(Altitude.getFont().deriveFont(25f)); Altitude.setForeground(Color.WHITE);
TASpeed = new JTextField("TAs", 5); TASpeed.setHorizontalAlignment(JTextField.CENTER);
TASpeed.setEditable(false); TASpeed.setOpaque(false);
TASpeed.setFont(TASpeed.getFont().deriveFont(25f)); TASpeed.setForeground(Color.WHITE);
TargetAlt = new JTextField("Taralt", 5); TargetAlt.setHorizontalAlignment(JTextField.CENTER);
TargetAlt.setEditable(false); TargetAlt.setOpaque(false);
TargetAlt.setFont(TargetAlt.getFont().deriveFont(25f)); TargetAlt.setForeground(Color.WHITE);
TargetSpeed = new JTextField("TArsp", 5); TargetSpeed.setHorizontalAlignment(JTextField.CENTER);
TargetSpeed.setEditable(false); TargetSpeed.setOpaque(false);
TargetSpeed.setFont(TASpeed.getFont().deriveFont(25f)); TargetSpeed.setForeground(Color.WHITE);
BaroCorrectUp = new JTextField("BaroCorU", 5); BaroCorrectUp.setHorizontalAlignment(JTextField.CENTER);
BaroCorrectUp.setEditable(false); BaroCorrectUp.setOpaque(false);
BaroCorrectUp.setFont(BaroCorrectUp.getFont().deriveFont(25f)); BaroCorrectUp.setForeground(Color.WHITE);
BaroCorrectDown = new JTextField("BaroCorD", 5); BaroCorrectDown.setHorizontalAlignment(JTextField.CENTER);
BaroCorrectDown.setEditable(false); BaroCorrectDown.setOpaque(false);
BaroCorrectDown.setFont(BaroCorrectUp.getFont().deriveFont(25f)); BaroCorrectDown.setForeground(Color.WHITE);
WindDir = new JTextField("Wind dir", 5); WindDir.setHorizontalAlignment(JTextField.CENTER);
WindDir.setEditable(false); WindDir.setOpaque(false);
WindDir.setFont(WindDir.getFont().deriveFont(25f)); WindDir.setForeground(Color.WHITE);
EquivSpeed = new JTextField("EquivSpe", 5); EquivSpeed.setHorizontalAlignment(JTextField.CENTER);
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent evt) {
switch(evt.getKeyCode()) {
case KeyEvent.VK_LEFT:
Rx1 -= 10; Ry1 += 10; Rx2 += 10; Ry2 -= 10;
x1 -=10; x2 +=10; Mx1 += 10; Mx2 -= 10;
repaint();
break;
case KeyEvent.VK_RIGHT:
Rx1 -= 10; Ry1 -= 10; Rx2 += 10; Ry2 += 10;
x1 += 10; x2 += 10; Mx1 -= 10; Mx2 += 10;
repaint();
break;
case KeyEvent.VK_DOWN:
y1 -= 10; y2 -= 10; Ly1 -= 10; Ly2 -= 10;
Sy1 += 10; Sy2 -= 10; Ry1 +=10; Ry2 += 10;
repaint();
break;
case KeyEvent.VK_UP:
y1 += 10; y2 += 10; Ly1 += 10; Ly2 += 10;
Sy1 -= 10; Sy2 += 10; Ry1 -= 10; Ry2 -= 10;
repaint();
break;
case KeyEvent.VK_M:
System.exit(0);
break;
case KeyEvent.VK_4:
countAd++;
BaroCorrectDown.setText(countAd + "");
repaint();
break;
case KeyEvent.VK_3:
countAu++;
BaroCorrectUp.setText(countAu + "");
repaint();
break;
}
}
});
cp.add(canvas);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(CANVAS_WIDTH / 3, CANVAS_HEIGHT / 4, CANVAS_WIDTH, CANVAS_HEIGHT);
setTitle("FLIGHT DISPLAY"); pack();
setVisible(true); requestFocus();
}
class DrawCanvas extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;
setBackground(CANVAS_BACKGROUND);
g.setColor(GROUND_COLOR);
//Draw ground Color
g.drawRect(Sx1 - Sx1,Sy1 /2, CANVAS_WIDTH, Sy2 /2);
g.fillRect(Sx1 - Sx1, Sy1 /2, CANVAS_WIDTH, Sy2 /2);
g.setColor(LINE_COLOR);
//Draw line centre horizontal
g.drawLine(Rx1, Ry1 /2, Rx2, Ry2 /2);
g.drawOval(x1 -15, y1 -15, 30, 30);
//Draw line dim
g.setColor(Color.YELLOW);
g.fillArc(CANVAS_WIDTH /2 -150, 10, 300, 170, 30, 120);
g.setColor(LINE_COLOR);
//Draw polyline centre plane
g.setColor(Color.YELLOW);
g.drawPolyline(xs, ys, 10);
g.fillPolygon(new Polygon(
new int[]{470, 350, 230, 350, 470},
new int[]{260, 205, 260, 225, 260},5));
g.setColor(Color.CYAN);
g.setColor(Color.BLACK);
g.drawArc(CANVAS_WIDTH / 2 -150, 10, 300, 170, 30, 120);
g.drawArc(CANVAS_WIDTH / 2 -150, 11, 300, 170, 30, 120);
g.setColor(CANVAS_BACKGROUND);
g.fillRect(0, 60, CANVAS_WIDTH, 50);
Color DarkTRANS = new Color(0.0f, 0.0f, 0.0f, 1.0f);
g.setColor(DarkTRANS);
g.fillRect(0, 400, CANVAS_WIDTH, 50);
g.fillRect(0, 345, 115, 55);
g.fillRect(585, 345, 115, 55);
g.setColor(LINE_COLOR);
g.drawLine(Lx1 -50, Ly1 -120, Lx2 +50, Ly2 -120);
g.drawLine(Lx1 -25, Ly1 -140, Lx2 +25, Ly2 -140);
g.drawLine(Lx1 -75, Ly1 -160, Lx2 +75, Ly2 -160);
g.drawLine(Lx1 -25, Ly1 +20, Lx2 +25, Ly2 +20);
g.drawLine(Lx1 -50, Ly1 +40, Lx2 +50, Ly2 +40);
g.drawLine(Lx1 -25, Ly1 +60, Lx2 +25, Ly2 +60);
g.drawLine(Lx1 -75, Ly1 +80, Lx2 +75, Ly2 +80);
g.drawLine(Lx1 -25, Ly1 +100, Lx2 +25, Ly2 +100);
g.drawLine(Lx1 -50, Ly1 +120, Lx2 +50, Ly2 +120);
//Draw line dim
g.drawLine(Lx1 -25, Ly1 -20, Lx2 +25, Ly2 -20);
g.drawLine(Lx1 -50, Ly1 -40, Lx2 +50, Ly2 -40);
g.drawLine(Lx1 -25, Ly1 -60, Lx2 +25, Ly2 -60);
g.drawLine(Lx1 -75, Ly1 -80, Lx2 +75, Ly2 -80);
g.drawLine(Lx1 -25, Ly1 -100, Lx2 +25, Ly2 -100);
//bottom triangles
g.setColor(DarkTRANS);
g.fillPolygon(new Polygon(
new int[]{115, 115, 200},
new int[]{400, 345, 400},3));
g.fillPolygon(new Polygon(
new int[]{585, 585, 500},
new int[]{400, 345, 400},3));
//top button triangle/shapes
g.fillPolygon(new Polygon(
new int[]{0, 200, 115, 0,},
new int[]{0, 0, 50, 50},4));
g.fillPolygon(new Polygon(
new int[]{500, 700, 700, 585,},
new int[]{0, 0, 50, 50},4));
//middle button shapes
g.fillPolygon(new Polygon(
new int[]{0, 100, 100, 117, 117, 130, 117, 117, 100, 100, 0},
new int[]{174, 174, 159, 159, 187, 197, 207, 235, 235, 220, 220},11));
//right hand shape
g.fillPolygon(new Polygon(
new int[]{700, 600, 600, 583, 583, 570, 583, 583, 600, 600, 700},
new int[]{174, 174, 159, 159, 187, 197, 207, 235, 235, 220, 220},11));
Color TRANS = new Color(0.0f, 0.0f, 0.0f, 0.35f);
g.setColor(TRANS);
g.fillRect(0, 0, 115, CANVAS_HEIGHT);
g.fillRect(585, 0, 115, CANVAS_HEIGHT);
g.setColor(LINE_COLOR);
g.drawLine(Mx1+20, My1 + My1, Mx2, My2-440);
g.drawLine(Mx1-20, My1 + My1, Mx2, My2-440);
g.drawLine(Mx1, My1 + My1, Mx2, My2-440);
g.drawString("10", Lx1 -90, Ly1 -75);
g.drawString("10", Lx1 +77, Ly1 -75);
g.drawString("10", Lx1 -90, Ly1 +85);
g.drawString("10", Lx1 +77, Ly1 +85);
g.drawString("20", Lx1 +77, Ly1 -155);
g.drawString("20", Lx1 -90, Ly1 -155);
g.drawString("Press alt + 3(U), 4(D)\n" , 582, 305);
g.drawString("To Initialize" , 595, 315);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Display();
}
});
}
}

This variation of LinePanel may suggest an approach.

import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
/**
* @see https://stackoverflow.com/a/15027637/230513
* @see https://stackoverflow.com/questions/6991648
* @see https://stackoverflow.com/questions/6887296
* @see https://stackoverflow.com/a/5797965/230513
*/
public class LinePanel extends JPanel {
private Point p1 = new Point(320, 100);
private Point p2 = new Point(320, 380);
private boolean drawing;
@Override
public Dimension getPreferredSize() {
return new Dimension(640, 480);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.blue);
g2d.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setStroke(new BasicStroke(8,
BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));
g.drawLine(p1.x, p1.y, p2.x, p2.y);
}
private class ControlPanel extends JPanel {
private static final int DELTA = 10;
public ControlPanel() {
this.add(new MoveButton("\u21BA", KeyEvent.VK_LEFT, DELTA, 0));
this.add(new MoveButton("\u21BB", KeyEvent.VK_RIGHT, -DELTA, 0));
}
private class MoveButton extends JButton {
KeyStroke k;
int dx, dy;
public MoveButton(String name, int code, final int dx, final int dy) {
super(name);
this.k = KeyStroke.getKeyStroke(code, 0);
this.dx = dx;
this.dy = dy;
this.setAction(new AbstractAction(this.getText()) {
@Override
public void actionPerformed(ActionEvent e) {
LinePanel.this.p1.translate(-dx, 0);
LinePanel.this.p2.translate(dx, 0);
LinePanel.this.repaint();
}
});
ControlPanel.this.getInputMap(
WHEN_IN_FOCUSED_WINDOW).put(k, k.toString());
ControlPanel.this.getActionMap().put(k.toString(), new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
MoveButton.this.doClick();
}
});
}
}
}
private void display() {
JFrame f = new JFrame("LinePanel");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.add(new ControlPanel(), BorderLayout.SOUTH);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new LinePanel().display();
}
});
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With