Maison > Java > javaDidacticiel > Comment puis-je créer un plan de coordonnées rotatif en Java qui permet de déplacer l'origine et de faire pivoter le plan, tout en affichant les étiquettes pivotées pour les graduations de l'axe Y ?

Comment puis-je créer un plan de coordonnées rotatif en Java qui permet de déplacer l'origine et de faire pivoter le plan, tout en affichant les étiquettes pivotées pour les graduations de l'axe Y ?

Barbara Streisand
Libérer: 2024-11-07 09:38:03
original
668 Les gens l'ont consulté

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?

Création d'un plan de coordonnées rotatif pour les données et le texte en Java

Problème :

Vous besoin d'un programme Java qui vous permet de :

  • Déplacer l'origine et faire pivoter le plan de coordonnées de telle sorte que les valeurs x progressent vers la droite et les valeurs y progressent vers le haut à partir de la nouvelle origine, qui devrait être la partie inférieure. coin gauche d'un rectangle intérieur spécifié.
  • Tracez les étiquettes pivotées pour les graduations sur l'axe y du tracé de données.

Solution :

Le code ci-dessous résout les problèmes du code d'origine et implémente les fonctionnalités requises.

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);
}
}
Copier après la connexion

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();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal