有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing如何在Java中制作面板、框架等以显示图形?

注:我以前从未使用过swing,也没有使用过graphics 2D,而且我不太会编程

我想做的是制作一个以数组/向量为输入的程序。这个数组,其中每个索引0,1,2等包含0或1(int)-表示0,1,2等分钟内的“无活动”或“活动”

我希望程序根据作为输入的数组绘制一条不连续的水平直线,表示“活动”与“无活动”,作为时间的函数。 当我运行代码时,它会在面板中弹出。。 这个想法是将活动/无活动显示为时间的函数,因此该线最好显示在图表中(x轴和y轴)。。。为了比较不同的情况,会有一些不连续的线在彼此上方

我曾经尝试过使用swing和graphics 2D查看示例,但由于时间有限,我可能真的需要一些帮助

任何代码:

  • 创建一个面板、框架等,在这里我可以“轻松地”看到我可以插入图形的位置:这是一个面板,可以显示我将制作的图形
  • 根据上述数组绘制不连续水平线的图形

。。。非常感谢:)

从评论中添加:

抱歉-没有完成我的回答:)我肯定可以尝试学习如何在摆动框架、面板等中使用所有不同的东西。。但目前我的主要目标是完成我的学校作业-这是数据本身的可视化-他们并不真正关心你如何到达那里,最重要的是它可视化了一些有用的东西。。。所以我想,如果我有一些代码可以让我开始,而不必先了解它是如何工作的,我就可以减少花在这上面的时间


共 (2) 个答案

  1. # 1 楼答案

    这是一个例子,我想它会有所帮助

    import java.awt.*;
    import javax.swing.*;
    
    public class ActivityGraph extends JFrame {
    
    int[] active = {0,1,1,0,0,0,1,0,1,0,1,0,1,1,1,1,0,0,1,0,1,1};
    int length = 25, //basic length in pixels for drawing the lines
            offset = 50; //so the lines aren't sticked at the border
    
    private ActivityGraph(String name, int x, int y, int width, int height) {
        super(name);
        setBounds(x, y, width, height);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JPanel panel = new GraphPanel();
        //panel.setBounds(0, 0, 800, 400); not nessesary
        add(panel);
    }
    
    public static void main(String[] args) {
        new ActivityGraph("Activity Graph", 60, 60, 800, 400).setVisible(true);
    }
    
    private class GraphPanel extends JPanel {
    
        public void paint(Graphics g) {
            g.setColor(Color.white);
            g.fillRect(0, 0, 800, 400);
            //setting background (method setBackground() doesn't want to work for me)
            g.setColor(Color.black);
            for(int i = 0; i<active.length; i++) {
                if(active[i]==0) {
                    g.drawLine(offset + i*length, offset + length, offset + i*length + length, offset + length);
                }
                else {
                    g.drawLine(offset + i*length, offset, offset + i*length + length, offset);
                }
                /*
                 * draw line from XY point to another XY point
                 * notice that X = Y = 0 point is in left top corner
                 * so higher Y values will mean "downer" points acctualy
                 */
            }
        }
    
    }
    
    }
    

    如果你愿意,我可以给你一个数学函数的图形抽屉(比如窦,幂,…)

  2. # 2 楼答案

    无需学习Graphics2D,只需学习^{}。这里有一个简单的tutorial让您开始学习(不过至少需要Java编程知识)