2017-03-16 2 views
0

J'ai la classe Gui avec un JPanel et JButton. Lorsque le bouton est cliqué, je voudrais afficher le graphique dans mon JPanel. Le graphique est dans une classe différente. Quelqu'un peut-il m'aider à faire cela s'il vous plaît?Diagramme à barres de classe différente dans la classe GUI

GUI CLASSE:

public class Gui extends JFrame implements ActionListener{ 

    JButton showGraph; 

    public Gui() { 

    super("GUI"); 
    setSize(1200,600); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    showGraph = new JButton("SHOW GRAPH"); 
    JPanel mainPanel = new JPanel(); 
    add(mainPanel); 
    mainPanel.setLayout(new GridLayout(2,0,10,10)); 
    mainPanel.setBorder(new EmptyBorder(10,10,10,10)); 
    mainPanel.add(showGraph); 
    JPanel graphPanel = new JPanel(); 
    graphPanel.setBackground(Color.yellow); 
    mainPanel.add(graphPanel); 

    showGraph.addActionListener(this); 

    } 



public static void main (String[] args){ 
    new Gui().setVisible(true); 
} 

@Override 
public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == showGraph) { 
     SimpleBarChart b = new SimpleBarChart(); 
     b.getGraph(); 
    } 
} 
} 

Répondre

0

Changer votre méthode getGraph() pour prendre une JFrame et passer this.

public void getgraph(JFrame f) { 

//JFrame f = new JFrame(); 
f.setSize(400, 300); 
... as before ... 
} 

Ensuite, appelez au actionPerformed

if (e.getSource() == showGraph) { 
    SimpleBarChart b = new SimpleBarChart(); 
    b.getGraph(this); 
} 

Vous ne pouvez pas avoir un cadre intérieur d'un cadre. Une autre option serait de faire getGraph() retourner un JPanel et ensuite vous pourriez mettre le panneau dans votre cadre existant au lieu de mettre à jour le cadre entier.

+0

ye qui crée un nouveau cadre à l'intérieur du cadre, pas la meilleure solution, en passant le Jpanel dans la méthode getGraph ne fonctionne pas non plus –

+0

Faites de votre JPanel graphPanel une variable membre de la classe afin que vous puissiez conserver une référence. Ensuite, getGraph() retourne un JPanel et fait 'graphPanel = b.getGraph();' dans votre actionePerformed. Puis pack() votre cadre. – geneSummons