【问题标题】:Java Swing how to display graphics component inside JPanelJava Swing如何在JPanel中显示图形组件
【发布时间】:2021-06-13 03:47:15
【问题描述】:

我有一个具有以下布局的应用程序:

点击下一个屏幕按钮后,它会隐藏所有组件,并会出现几个饼图和条形图。

所有这些代码都在我的GUI 类中,然后我有一个不同的类,称为PieChart 类,类似于this,它使用Java Graphics 生成图表我如何调用这个类并显示图表在面板内还是在我的框架内?谢谢!

【问题讨论】:

  • 不要删除或重建 JPanel。使用 Swing CardLayout 从一个 JPanel 切换到下一个 JPanel。
  • 如果你不想使用布局管理器,那么你可以有两个 jPanel 完全填充 jFrame,每个都有自己的子组件,你可以简单地隐藏/显示你需要使用 @ 987654328@ 请注意,您链接的示例可以轻松放置在 jPanel 而不是 jFrame 中。
  • “在此之后..” 再问一个问题。 @GilbertLeBlanc 建议了从上面看到的 GUI 切换到图形的最佳方式。先把它整理好。旁白:我投票结束这个,因为它有两个问题。如果第二个被删掉,我会删除那个近距离投票。
  • @AndrewThompson 感谢提醒,我删除了第一个问题,以便我的帖子更相关,我帖子的主要意图保持不变,我想知道如何显示标签或框架内的图表,谢谢
  • @GilbertLeBlanc 非常感谢,CardLayout 看起来真的很有用,我会用它

标签: java swing user-interface graphics jlabel


【解决方案1】:

如果 PieChart 扩展了一个组件,那么它可以简单地放置到一个面板中,例如chartPanel.add(chart);,然后您可以使用卡片布局,或者您可以手动切换可见性,如 cmets 中所述。下面是一个更改组件可见性的基本示例:

JFrame frame = new JFrame("Demo");
JPanel mainPanel = new JPanel();
JPanel chartPanel = new JPanel();
JButton button = new JButton("View Chart");

frame.add(mainPanel);
frame.add(chartPanel);
mainPanel.add(button);
chartPanel.setVisible(false);

//Add event to create asd show the pie chart
button.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e)
    {
        //Remove any previous chart
        chartPanel.removeAll();

        //Create and add new chart based on data
        PieChart chart = new PieChart(yourData);
        chartPanel.add(chart);
    
        //Hide the main panel with the buttons, and show the chart panel instead
        chartPanel.setVisible(true);
        mainPanel.setVisible(false);
    }
});

请注意,您需要向 chartPanel 添加另一个按钮,以便在需要时切换回主面板。

【讨论】:

  • 使用CardLayout 的一个优点是它(带有卡片布局的面板)将返回与最高卡片一样高和最宽卡片一样宽的首选尺寸。
猜你喜欢
  • 2016-02-16
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 2014-05-15
相关资源
最近更新 更多