JAVA实现在面板中添加图表_java-如何在不制作新图表的情况下将jzy3d图表添加到JFrame?...

以下代码用于在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,请再次阅读我的问题.

解决方法:

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

更新

充实这个想法.

>不要扩展框架,只需保留对面板的引用即可.

>将面板设置为GridLayout或BorderLayout(添加到任何一个不受限制的单个组件将被拉伸到可用的宽度和高度).

>就像上面的代码片段一样,填写该面板.

>将该面板添加到主(也是唯一)框架中的CardLayout的卡片中.

>(如有必要)翻转至该卡.

标签:java,swing,jframe,layout-manager

来源: https://codeday.me/bug/20191013/1905079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值