首頁  >  文章  >  Java  >  如何在 Java 中建立一個旋轉座標平面,允許移動原點並旋轉平面,同時顯示 y 軸刻度標記的旋轉標籤?

如何在 Java 中建立一個旋轉座標平面,允許移動原點並旋轉平面,同時顯示 y 軸刻度標記的旋轉標籤?

Barbara Streisand
Barbara Streisand原創
2024-11-07 09:38:03528瀏覽

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?

在Java 中為資料和文字建立旋轉座標平面

問題:

問題:
  • 問題:

你需要一個Java 程序,使您能夠:

移動原點並旋轉坐標平面,使得x 值從新原點向右移動,y 值從新原點向上移動,新原點應該是底部-指定內部矩形的左角。

在資料圖的 y 軸上繪製刻度線的旋轉標籤。

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);
}
}
解決方案:

下面的程式碼解決了原始程式碼中的問題並實現了所需的功能。

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();
DataGUI.java:DataPanel。 java:

以上是如何在 Java 中建立一個旋轉座標平面,允許移動原點並旋轉平面,同時顯示 y 軸刻度標記的旋轉標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn