2017-03-16 4 views
0

Ich habe Gui-Klasse mit JPanel und JButton. Wenn die Schaltfläche geklickt wird, möchte ich das Diagramm in meinem JPanel anzeigen. Der Graph ist in einer anderen Klasse. Kann mir bitte jemand helfen?Balkendiagramm von verschiedenen Klassen in GUI-Klasse

GUI KLASSE:

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(); 
    } 
} 
} 

Antwort

0

ändern getGraph() -Methode eine JFrame zu nehmen und in this passieren.

public void getgraph(JFrame f) { 

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

Rufen Sie dann in actionPerformed

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

Sie nicht, einen Rahmen innerhalb eines Rahmens haben. Eine andere Option wäre, dass getGraph() ein JPanel zurückgibt und Sie dann das Panel in Ihren bestehenden Frame einfügen können, anstatt den gesamten Frame zu aktualisieren.

+0

ye das neue Frame innerhalb des Frames erstellt, nicht die beste Lösung, die Jpanel in GetGraph Methode nicht funktioniert entweder –

+0

Machen Sie Ihre 'JPanel graphPanel' eine Klassenmitgliedsvariable, so dass Sie einen Verweis auf es behalten können. Lassen Sie dann getGraph() ein JPanel zurück und machen Sie 'graphPanel = b.getGraph();' in Ihrem actionePerformed. Dann pack() deinen Rahmen. – geneSummons

Verwandte Themen