Java: Ajout panneau dans un autre au moment de l'exécution pour adapter la zone visible

StackOverflow https://stackoverflow.com/questions/7812221

  •  26-10-2019
  •  | 
  •  

Question

Dans ma demande, je veux montrer le graphique généré, en utilisant JUNG. Elle produit l'objet JPanel en sortie. Donc, je pensais que ce serait juste une question d'ajouter un composant à panneau. Mais le graphique est tracé en dehors de son groupe parent. Capture d'écran: capture d'écran Comment puis-je limiter le graphique pour être seulement à l'intérieur de la zone visible? Le code que j'utilise pour ajouter le graphique au panneau est ce (la frontière a été pour moi de voir les frontières du panneau, mais il ne montre pas pour une raison quelconque):

    Layout<Object, String> layout = new CircleLayout<Object, String> (graphProvider.getGraph());
    layout.setSize(panel.getMarketGraphPane().getPreferredSize());
    BasicVisualizationServer<Object,String> graphPanel = new BasicVisualizationServer<Object,String>(layout);
    graphPanel.setBorder(new EtchedBorder());
    graphPanel.setSize(panel.getMarketGraphPane().getPreferredSize());
    panel.getMarketGraphPane().add(graphPanel, BorderLayout.CENTER);
    panel.getMarketGraphPane().revalidate();
Était-ce utile?

La solution

utiliser GraphZoomScrollPane ajouter graphique zoom capable conteneur scrollpane pour objet VisualizationViewer comme suit:

GraphZoomScrollPane pane = new GraphZoomScrollPane(visualizationViewer);
JPanel panel = new JPanel();
BorderLayout panelMapLayout = new BorderLayout();
panel.setLayout(panelMapLayout);
panel.add(pane, BorderLayout.CENTER);

Autres conseils

trop peu d'informations pour l'image réelle

1 dépend

  • ce qui rend Size (graphique généré, en utilisant JUNG), vous définissez il setSize (int, int) aussi,

  • est un graphique resiziable,

2) supprimer

  • layout.setSize(panel.getMarketGraphPane().getPreferredSize());

et

  • graphPanel.setSize(panel.getMarketGraphPane().getPreferredSize());

vous ne pouvez pas à setSize pour objet placé au BorderLayout.CENTER, et je pense qu'il est possible de mettre directement (generated graph, using JUNG. It produces JPanel object) dans la zone de BorderLayout.CENTER, essayer peut-être votre twice setSize généré un certain désordre

et vous pouvez appeler uniquement

panel.add(graphPanel, BorderLayout.CENTER);
panel.revalidate();
panel.repaint();

3) deux autres choises (sans setSize nettoyage)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top