我正在构建一个Java程序。该程序的核心在JFrame中可视化,其中包含一个JMenuBar和各种JMenuItem和JMenu。关键是我在所有框架中添加了一个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);
在这里,我添加了中央面板,在这里,在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();
你能帮帮我吗?谢谢!
试试这些。。
centralPanel.updateUI(); // or
SwingUtilities.updateComponentTreeUI(getRootPane());
>
在SwingUtilities中执行帧代码。invokeLater()
代替repaint()
调用updateUI()
或SwingUtilities.updateComponentTreeUI(getRootPane()
来更新用户交互界面。
使用卡片布局,而不是尝试添加和删除组件/面板。这里干净多了,你不必担心可能出错的事情,比如你现在面临的情况。
请参阅此示例以了解它是多么简单和干净。另请参见如何使用CardLayout教程
旁注
>
一个组件只能有一个父容器。虽然我不认为这会给你带来问题。很高兴知道。首先,我看到您试图将storicoPanel添加到从未添加到中心面板的JScrollPane中。然后将storicoPanel添加到中央面板。此后,JScrollPane将不再是父级。
我不确定你在使用这个carrelloFrame=new JFrame();
做什么,但是你的类已经是一个JFrame
,为什么还要创建另一个?
仅供参考,动态添加组件时,需要重新验证()和重新绘制()。不过,在您的情况下,我完全反对添加和删除组件,因为这看起来是一个完美的卡片布局案例。
我试图通过点击JButton将一张新卡添加到现有的JPanel(cardLayout)中,然后转到该新卡,但由于新卡未注册,我得到了空异常。 我试着在谷歌上搜索,但找不到和示例,我试着用 但什么都不管用,这是可能的吗?如果是的话,有人知道任何例子吗? 代码如下,jPanelSliding1。NextSlidePanel只需移动到CardLayout中选定的JPanel。此处创建的新面板由于找不到面
我有网格面板。我想将树面板添加到该网格面板中的列中。 网格面板 树商店 例如,如果我想把这个树存储在下,也就是说,当我们点击Lisa时,树会扩展。我们怎么能做到呢。 谢谢你。
问题内容: 我有3个JPanels,我想将它们全部放在一个JPanel中。我将GridBagLayout用于主面板。但是只添加了一个面板。为什么会这样呢? 定制程序方法是将项目添加到这些面板中的方法。 问题答案: 我不确定,但是我认为您需要在GridBagLayout中添加一个GridBagConstraints。尝试查看此站点,以获取有关如何使用GridBagLayout的想法: 链接 或者也许
下面是表类: 我尝试了几种方法,比如在ActionEvent上使用repaint,或者直接在table类中使用repaint.......如果我添加直接进入主jframe构造函数工作,但从操作上它就不工作了,所以我有点没有选择了,所以有人能帮我一把吗?
我目前正在尝试对我的实现一个操作侦听器,以便在选择它时,它将打开一个供用户选择他们希望GUI使用的文件。对于初学者,我如何让控制台打印出“框单击!”当用户选中该框时? 它已经有一段时间,因为我已经在摇摆编程,所以任何建议都有帮助!
在 HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall 下创建一个以你的产品名为名的项,就可以向控制面板中的添加/删除程序添加一个条目。对于 Windows NT (NT4/2000/XP),可能还要在 HKCU 下创建项,而且这将只能显示给当前用户。这里有许多可以写入关于你的应用程序和卸载程序的信息的值项。可以通过 WriteRegS