以下代码用于在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