当前位置: 首页 > 知识库问答 >
问题:

我很难让图表面板出现在现有的JPanel中。这和马蒂斯有关吗?

董弘新
2023-03-14

这是我关于堆栈溢出的第一个问题,我对在描述这个问题时的任何错误表示歉意,所以请随意要求更多或不同的描述。

我正在用jFreeChart API制作一个程序,通过创建一个图表面板并在每次编辑时刷新其中的图表,我试图允许实时编辑显示的图表。

public void displayChart(JFreeChart chart) {
    ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setDomainZoomable(true);
    chartPanel.setVisible(true);
    jPanel3.add(chartPanel, BorderLayout.CENTER);
    jPanel3.setLayout(new html" target="_blank">java.awt.BorderLayout());
    jPanel3.validate();
}

private void ChartSelectionActionPerformed(java.awt.event.ActionEvent evt) {                                               
    String selection;
    selection = ChartSelection.getActionCommand();
    if (selection == "S/D") {
    Chart Chart = new Chart();
    JFreeChart chart = Chart.generateSandDBase();
    displayChart(chart);
    } else {

    }
}                                              

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    Series Series = new Series();
    Chart Chart = new Chart();
    XYSeries supply = Series.getSupplySeries();
    double tempX;
    double tempY;
    for (int i = 0; i < 10; i++) {
        tempX = (double) supply.getX(i);
        tempX = tempX + 1;
        tempY = (double) supply.getY(i);
        supply.remove(i);
        supply.add(tempX, tempY);
        System.out.println(supply.getX(i).toString());
        System.out.println(supply.getY(i).toString());
    }
    Series.setSupplySeries(supply);
    JFreeChart chart = Chart.generateSandD(supply, Series.getDemandSeries());
    displayChart(chart);
}                   

我有点担心这可能与马蒂斯有关,因为我正在使用NetBeans的GUI构建器,它似乎运行在某种黑暗的空间魔法上,可能会搞砸这一切。

非常感谢所有的帮助,我是一个新手程序员,所以这一切都有很大的帮助。

编辑:所以,经过几个小时的混乱,我听到了一些违反层次结构,当我试图添加一个图表在运行时。我对此不太了解。有没有一种方法可以让我在GUI构造函数中实例化我的图表框架?我知道把代码放在哪里,但我似乎不能让它工作,因为一个图表框架必须有一个图表来实例化。

共有1个答案

谢洛城
2023-03-14

所以在网上搜索了几个可怕的小时后,我发现了问题。

事实证明,为了在JPanel中拥有ChartPanel,JPanel必须位于BorderLayout中。我以前已经尝试过几次了,但是NetBeans中默认的Swing GUI构建器Matisse似乎不允许在运行时更改放置组件的布局。

我必须在Matisse design选项卡中将JPanel设置为BorderLayout,方法是右键单击JPanel并将布局设置为Border。出于某种原因,Matisse决定调整面板的大小为(0,0),因此也必须调整面板的大小。

除此之外,我的代码是正确的。

 类似资料:
  • Java Jpanel在运行时没有显示,在几秒钟引用后触底反弹(getContentPane().add(new MeFirstApp());)在 MeFirstApp 类中 /**文件:MeFirstPanel。java**Description:这个类在JPanel中定义了一个GUI,其中包含*个带有初始标签“Me first!”的JButton还有“下一个我!”*按下任一按钮都会导致标签交换

  • 这是我的密码 没有语法错误,但是我的Jtag没有添加(按钮工作正常)。我不想从null更改布局,因为我希望能够定义按钮和标签的位置。有人知道为什么这行不通吗?

  • 我有一个包含按钮的J桌面面板。当我点击它时,我想出现一个定制的JOptionPane,我在其中添加了一个J标签和一个JTable。 问题是我在JOptionPane中没有得到任何东西 这是我的代码: 我应该怎么做才能在JOptionPane中显示面板?提前谢谢你。 PS:我使用JoptionPane的原因是禁止用户单击JDesktopPane中的任何其他地方(以及按钮),除非他关闭当前窗口。

  • 我有一个web应用程序,用户可以点击按钮来引擎对象。 我用Javascript编写了下面的方法,它工作了。但是,如果有2个或3个以上的用户在克隆,就会弹出随机错误。例如,它会说,或。 但如果只有一个人在做,它就永远不会有错误。 所以我在想,有没有更好的写法: 我尝试过这样做,但它生成空值: 所以我一定是做错了什么,我希望有人能给我指明正确的方向。 谢谢!

  • 这是关于类可以实现的比较契约。 除非您愿意放弃面向对象抽象的好处,否则无法在保留compareTo契约的同时使用新的值组件扩展可实例化类。同样的解决方法也适用。如果你想给实现Comparable的类添加一个值组件,不要扩展它;编写一个不相关的类,其中包含第一个类的实例。然后提供一个返回该实例的“视图”方法。这使您可以在第二个类上实现您喜欢的任何compareTo方法,同时允许其客户端在需要时将第二

  • 问题内容: 我正在尝试学习使用pygame制作基本游戏。我想导入并显示.png格式的图像。到目前为止,我的尝试是: 图像(clouds.png)与文件位于同一文件夹中。当我尝试运行此程序时,出现错误: 问题答案: 干得好。它将图像变为0,0。另一个问题是您的pyimage似乎不是由png支持构建的