ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-如何在不制作新图表的情况下将jzy3d图表添加到JFrame?

2019-10-13 03:03:28  阅读:236  来源: 互联网

标签:java swing jframe layout-manager


以下代码用于在JFrame中制作jzy3d图表:

public class SurfaceViewerFrame extends IconFrame {

    public SurfaceViewerFrame() {
        setResizable(false);
        //System.loadLibrary("lib/jogl2-rc10/gluegen-rt.jar");
        Settings.getInstance().setHardwareAccelerated(true);
        FormLayout layout=new FormLayout("10px, 300px, 10px", "30px, 10px, 20px, 300px, 10px");
        CellConstraints сс=new CellConstraints();

        JLabel title=new JLabel("Выходная поверхность");


        Mapper mapper = new Mapper() {
            public double f(double x, double y) {
                return x * Math.sin(x * y);
            }
        };
        // Define range and precision for the function to plot
        Range range = new Range(-300, 300);
        int steps = 80;

        // Create the object to represent the function over the given range.
        final Shape surface = Builder.buildOrthonormal(new OrthonormalGrid(range, steps, range, steps), mapper);
        surface.setColorMapper(new ColorMapper(new ColorMapRainbow(), surface.getBounds().getZmin(), surface.getBounds().getZmax(), new Color(1, 1, 1, .5f)));
        surface.setFaceDisplayed(true);
        surface.setWireframeDisplayed(false);

        // Create a chart
        Chart chart = new Chart(Quality.Advanced, "awt");
        chart.getScene().getGraph().add(surface);
        chart.addController(new CameraKeyController());

//      ChartLauncher.openChart(chart, new Rectangle(0, 0, 100, 100), "122");

        JPanel panel=new JPanel();
        panel.add(title, сс.xy(1, 1));
        panel.add((Component)chart.getCanvas(), CC.xy(1, 3));
        add(panel);
        setSize(320, 370);
        setVisible(true);
    }
}

但是,如果不推荐openChart()方法,我什么也看不到.如果这样做,那么我的JFrame中将有一个Chart并有一个新的空JFrame;我不想使用它.请告诉我,我该如何解决?我需要在JFrame中显示图形而不创建新图形.

更新:
抱歉,jzy3d是用于制作3d曲面的库.并且此代码有效,我不需要其他LayoutManager,请再次阅读我的问题.

解决方法:

CardLayout非常适合此用途.有关详细信息和工作示例,请参见How to Use CardLayout.

this answer到/链接到“使用多个JFrame,良好/不良实践?”中/可以看到其他组合数据的策略.

更新

充实这个想法.

>不要扩展框架,只需保留对面板的引用即可.
>将面板设置为GridLayout或BorderLayout(添加到任何一个不受限制的单个组件将被拉伸到可用的宽度和高度).
>就像上面的代码片段一样,填写该面板.
>将该面板添加到主(也是唯一)框架中的CardLayout的卡片中.
>(如有必要)翻转至该卡.

标签:java,swing,jframe,layout-manager
来源: https://codeday.me/bug/20191013/1905079.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有