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 ?
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 :
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); } }
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();
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!