gpt4 book ai didi

java - 添加面板到面板

转载 作者:行者123 更新时间:2023-12-01 23:13:36 25 4
gpt4 key购买 nike

我正在构建一个 Java 程序。该程序的核心在带有 JMenuBar 和各种 JMenuItem 和 JMenu 的 JFrame 中可视化。重点是我向所有框架添加了一个centralPanel,但是如果我向centralPanel添加一些东西,它仅在我调整主框架大小、缩小或放大它时才会显示!代码如下:

这是构造函数:

    public UserFrame(Sistema system)
{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setSize(screenSize.width, screenSize.height);
storicoPanel = new JPanel();
carrelloPanel = new JPanel();
carrelloFrame = new JFrame();
pane = new JScrollPane(storicoArea);
close = new JButton("Chiudi");
this.sistema = system;
menu = new JMenuBar();
this.setJMenuBar(menu);

centralPanel = new JPanel();
add(centralPanel);

这里我添加了centralPanel,在这里,在ActionListener中,我尝试向其中添加一些内容,但它不起作用:

public ActionListener createVisualizzaStorico(final ArrayList<Acquisto> array)
{
class Visualize implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
storicoPanel.removeAll();
for(Acquisto a : array)
{
Articolo temp = a.getArticolo();
if(temp instanceof Vacanza)
storicoPanel.add(new VacanzaPanel((Vacanza)temp));
else if(temp instanceof BeneDiConsumo)
storicoPanel.add(new BeneDiConsumoPanel((BeneDiConsumo)temp));
else if(temp instanceof Cena)
storicoPanel.add(new CenaPanel((Cena)temp));
else
storicoPanel.add(new PrestazioniOperaPanel((PrestazioneOpera)temp));

}

centralPanel.add(storicoPanel);
centralPanel.repaint();

你能帮我一下吗?谢谢!

最佳答案

使用 CardLayout 而不是尝试添加和删除组件/面板。它更加干净,您不必担心可能出错的事情,就像您在这里所面临的那样。

参见this example看看它是多么简单和干净。另请参阅How to Use CardLayout教程

<小时/>

旁注

  • 一个组件只能有一个父容器。虽然我不认为这会给你带来问题。很高兴知道。首先,我看到您尝试将 storicoPanel 添加到 JScrollPane,而 JScrollPane 您从未添加到 centerPanel。然后,稍后将 storicoPanel 添加到 centerPanel。此后 JScrollPane 将不再是父级。

  • 我不确定您使用这个 carrelloFrame = new JFrame(); 做什么,但您的类已经是 JFrame,为什么要创建另一个?

  • 仅供引用,动态添加组件时,需要revalidate()repaint()。不过,在您的情况下,我完全反对添加和删除组件,因为这看起来是 CardLayout 的完美案例。

关于java - 添加面板到面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21548866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com