【问题标题】:Labeling x and y axis java gui标签 x 和 y 轴 java gui
【发布时间】:2012-11-24 22:05:14
【问题描述】:

第一次发布海报,请多多包涵。

我正在尝试使用 Java GUI 创建一个图形计算器,(是的,我知道已经有应用程序可以这样做。)我正在使用 Graphics2D 类,只是想知道如何标记 x 和 y 轴。

这是我到目前为止所写的内容,它将绘制基本抛物线以及 x 和 y 轴。另外,如果有人能告诉我如何改变它,使轴线更细,那就太棒了!

提前致谢! -埃文

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class GraphWindow extends JPanel {

    /**
     * @param args
     */
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        double max=16;
        double min=0;
        double x[]= {-4,-3,-2,-1,0,1,2,3,4};
        double y[]={16,9,4,1,0,1,4,9,16};

        Graphics2D g2=(Graphics2D)g;
        setBackground(Color.WHITE);
        g2.translate(getWidth()/2,getHeight()/2);
        g2.scale(5.0, 5.0);
        g2.draw( new Line2D.Double(-4*100,0,4*100,0));
        g2.draw( new Line2D.Double(0,min*100,0,-max*100));
        for(int i=0;i<x.length;i++){
            if(i+1<x.length){
            g2.setColor(Color.RED);
            g2.draw(new Line2D.Double(x[i], -y[i], x[i+1], -y[i+1]));
            }
            else{
                break;
            }
        }

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2)“另外,如果有人能告诉我如何改变它,让轴线变细,那就太棒了!” g2.scale(1.0, 1.0);

标签: java swing user-interface jpanel paintcomponent


【解决方案1】:

您可以使用Graphics.drawString() 来绘制两个轴:

g.setColor(Color.black);
g.setFont(new Font("SansSerif", Font.BOLD, 8));

g.drawString("X Axis", 30, 10);

// rotate for Y axis
g2.rotate(-Math.PI/2);
g.drawString("Y Axis", 20, -8);

Graphics2D 被旋转以绘制 Y 轴。确保将其作为paintComponent 中的最后 组语句,以避免重新轮换Graphics2D

您可以使用以下方法获得更细的线条:

g2.scale(2.0, 2.0);

见:Graphics2D.scale()

【讨论】:

  • 另外,当我运行代码时,它会经历两次,我不知道为什么。
  • 我还想让轴用数字标记,即如果 x 从 -4 变为 4 我想在轴上显示 -4 -3 -2 -1...,并带有像 | 这样的刻度线,我该如何完成?
  • 您需要计算要显示的刻度的点数。您可以使用较短的行长度使用g.drawLine
  • 但是我如何让它把抽动画到线上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
  • 2020-11-05
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 2015-12-10
相关资源
最近更新 更多