为什么我的JPanel在添加时没有调整到JFrame的大小?

时间:2018-04-19 15:06:58

标签: java swing jframe jpanel graphics2d

我正在尝试创建一个显示使用Graphics2D方法绘制的图形的程序。我有一个名为Model的类,其中包含我想以图形方式表示的财务信息。在程序的主要方法中,我做了以下声明并调用,

m = new Model(stock, strike, interest, dividend, volatility, expiration);
m.addGraph(fSelect, vSelect);

模型函数构造函数只是将参数传递给类中的某些字段。 fSelect和vSelect告知Graph类我创建了什么函数来绘制图形以及要绘制的图形变量。 addGraph方法看起来像,

 public void addGraph(int fSelection, int vSelection){
    //Why is my panel not showing up?
    graphPanel = new Graph(fSelection, vSelection, thisStock, thisStrike, thisInterest,
                         thisDividend, thisExpiration, thisVolatility);
    JFrame jf = new JFrame();
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.add(graphPanel);
    jf.setSize(300, 300);
    graphPanel.drawGraph();
    jf.setVisible(true);
}

Graph类扩展了JPanel类。它的构造函数看起来像这样,

public Graph(int whichFunction, int whichVariable, double whichStock, double whichStrike, double whichInterest, 
                double whichDividend, double whichExpiration, double whichVolatility){
    super();
    //...pass arguments into class fields
}

当我运行程序时,我得到一个空白的JFrame。我不知道为什么它是空白的。我必须在drawGraph方法中做错事,或者至少我正在考虑问题的根源。 drawGraph方法的要点是,

 try{
     Graphics2D g2 = (Graphics2D) this.getGraphics();
     //draw stuff
     //...
     Toolkit.getDefaultToolkit().sync();
     g2.dispose();
 }
 catch(Exception e) { }

我在try子句中调用各种Graphics2D方法,如fillRect,drawLine等。这是在JPanel上绘图的正确方法还是我错过了什么?

0 个答案:

没有答案