我可以从一个jframe的面板到另一个jframe获取图形吗? (Netbeans的)

时间:2014-02-10 02:15:06

标签: java swing graphics jpanel paint

我正在研究具体功能的象征性衍生物。我有三节课。

fnc.java represnets如何看起来像衍生个体功能。例如:

 public void der_cotg(Graphics g,int x, int y){
    drawBroken_line(g,"-1","sin  (x)",x+23,y); //putting pixels between x and y
    g.setFont(new Font("Arial", Font.BOLD,18));//Graphics g
    g.drawString("2", x+66, y+18);
}

Jmain.java 是JFrame表单,表示字段,我们可以看到衍生函数的vizualization。有两个标签

  • f(x)=
  • g(x)=,

他们旁边的两个小组

和打开另一个JFrame choose.java 的按钮,您可以在其中选择功能。它由Jpanel和按钮(代表具体功能)组成。如果按下其中一个按钮,具体功能将显示在 choose.java 的面板上。

我想从 choose.java 获取图形并设置 Jmain.java 的Panel。 我知道如何获取和设置文本字段,但我还没有找到是否可以使用Panels。

1 个答案:

答案 0 :(得分:1)

this answer所示,您可以创建BufferedImage内容的JPanel。该示例将PanelOneJPanel)传递给另一个JPanelPanelTwo)的方法,这是PanelTwo中的方法从传递给它的BufferedImage创建PanelOne

BufferedImage bi;
....
private void setImage(PanelOne panel) {
    Dimension d = panel.getPreferredSize();
    int w = (int)d.getWidth();
    int h =(int)d.getHeight();
    bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
    Graphics2D g = bi.createGraphics();
    panel.paint(g);
    g.dispose();
}
....
@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(bi, 0, 0, 250, 250, 0, 0, 250, 250, this);
}

这是结果。 PanelOne在左侧,并将自己传递给右侧的PanelTwo

enter image description here