Rumah >Java >javaTutorial >Bagaimanakah saya boleh mencipta satah koordinat berputar di Jawa yang membolehkan untuk memindahkan asal dan memutar satah, sambil memaparkan label diputar untuk tanda tic paksi-y?

Bagaimanakah saya boleh mencipta satah koordinat berputar di Jawa yang membolehkan untuk memindahkan asal dan memutar satah, sambil memaparkan label diputar untuk tanda tic paksi-y?

Barbara Streisand
Barbara Streisandasal
2024-11-07 09:38:03646semak imbas

How can I create a rotating coordinate plane in Java that allows for moving the origin and rotating the plane, while displaying rotated labels for y-axis tic marks?

Mencipta Satah Koordinat Berputar untuk Data dan Teks dalam Java

Masalah:

Anda memerlukan program Java yang membolehkan anda:

  • Menggerakkan asalan dan memutarkan satah koordinat supaya nilai-x maju ke kanan dan nilai-y maju ke atas daripada asal baharu, yang sepatutnya menjadi bahagian bawah- sudut kiri segi empat tepat dalam yang ditentukan.
  • Plot label diputar untuk tanda tic pada paksi-y plot data.

Penyelesaian:

Kod di bawah menangani masalah dalam kod asal dan melaksanakan fungsi yang diperlukan.

DataGUI.java:

import java.awt.*;
import java.util.ArrayList;
import javax.swing.*;

class DataGUI extends JFrame{
DataGUI() {
    super("X,Y Plot");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setPreferredSize(new Dimension(800, 400));
    this.pack();
    this.setSize(new Dimension(800, 600));
    this.setLocationRelativeTo(null);


    setLayout(new GridLayout());
    ArrayList<Double> myDiffs = new ArrayList<>();
    myDiffs.add(25.0);
    myDiffs.add(9.0);
    myDiffs.add(7.0);
    myDiffs.add(16.0);
    myDiffs.add(15.0);
    myDiffs.add(6.0);
    myDiffs.add(2.0);
    myDiffs.add(8.0);
    myDiffs.add(2.0);
    myDiffs.add(27.0);
    myDiffs.add(14.0);
    myDiffs.add(12.0);
    myDiffs.add(19.0);
    myDiffs.add(10.0);
    myDiffs.add(11.0);
    myDiffs.add(8.0);
    myDiffs.add(19.0);
    myDiffs.add(2.0);
    myDiffs.add(16.0);
    myDiffs.add(5.0);
    myDiffs.add(18.0);
    myDiffs.add(23.0);
    myDiffs.add(9.0);
    myDiffs.add(4.0);
    myDiffs.add(8.0);
    myDiffs.add(9.0);
    myDiffs.add(3.0);
    myDiffs.add(3.0);
    myDiffs.add(9.0);
    myDiffs.add(13.0);
    myDiffs.add(17.0);
    myDiffs.add(7.0);
    myDiffs.add(0.0);
    myDiffs.add(2.0);
    myDiffs.add(3.0);
    myDiffs.add(33.0);
    myDiffs.add(23.0);
    myDiffs.add(26.0);
    myDiffs.add(12.0);
    myDiffs.add(12.0);
    myDiffs.add(19.0);
    myDiffs.add(14.0);
    myDiffs.add(9.0);
    myDiffs.add(26.0);
    myDiffs.add(24.0);
    myDiffs.add(13.0);
    myDiffs.add(19.0);
    myDiffs.add(2.0);
    myDiffs.add(7.0);
    myDiffs.add(28.0);
    myDiffs.add(15.0);
    myDiffs.add(2.0);
    myDiffs.add(5.0);
    myDiffs.add(17.0);
    myDiffs.add(2.0);
    myDiffs.add(16.0);
    myDiffs.add(19.0);
    myDiffs.add(2.0);
    myDiffs.add(31.0);
    DataPanel myPP = new DataPanel(myDiffs,this.getHeight(),this.getWidth());
    this.add(myPP);
    this.setVisible(true);// Display the panel.
}
public static void main(String[] args){
    DataGUI myDataGUI = new DataGUI();
    myDataGUI.setVisible(true);
}
}

DataPanel. java:

import java.awt.*;
import java.awt.geom.AffineTransform;
import javax.swing.*;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.*;

class DataPanel extends JPanel {
Insets ins; // holds the panel's insets
ArrayList<Double> myDiffs;
double maxDiff = Double.NEGATIVE_INFINITY;
double minDiff = Double.POSITIVE_INFINITY;
double maxPlot;

DataPanel(ArrayList<Double> Diffs, int h, int w){
    setOpaque(true);// Ensure that panel is opaque.
    setPreferredSize(new Dimension(w, h));
    setMinimumSize(new Dimension(w, h));
    setMaximumSize(new Dimension(w, h));
    myDiffs = Diffs;
    repaint();
    this.setVisible(true);
}

protected void paintComponent(Graphics g){// Override paintComponent() method.
    super.paintComponent(g);
    //get data about plotting environment and about text
    int height = getHeight();
    int width = getWidth();
    ins = getInsets();
    Graphics2D g2d = (Graphics2D)g;
    FontMetrics fontMetrics = g2d.getFontMetrics();
    String xString = ("x-axis label");
    int xStrWidth = fontMetrics.stringWidth(xString);
    int xStrHeight = fontMetrics.getHeight();
    String yString = "y-axis label";
    int yStrWidth = fontMetrics.stringWidth(yString);
    int yStrHeight = fontMetrics.getHeight();

Atas ialah kandungan terperinci Bagaimanakah saya boleh mencipta satah koordinat berputar di Jawa yang membolehkan untuk memindahkan asal dan memutar satah, sambil memaparkan label diputar untuk tanda tic paksi-y?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn