Java 我能';在JApplet中看不到我的JPanel及其组件
我想把Java 我能';在JApplet中看不到我的JPanel及其组件,java,swing,Java,Swing,我想把JPanel放在JApplet中,问题是我看不到它:(我已经覆盖了我的JPanel的paintComponent以获得背景图像,但我什么也看不见。当我删除我覆盖的paintComponenet方法,并为该面板的背景设置颜色时,JPanel似乎填充了JApplet而仍然没有任何组件nt可见:-S我尝试了不同的布局。我还将面板放在另一个面板的中心,该面板填充了我的JApplet,但没有任何更改,仍然没有组件和背景图像可见:( 上面的代码可以编译。我甚至不能将Keylistener添加到我的JP
JPanel
放在JApplet
中,问题是我看不到它:(我已经覆盖了我的JPanel
的paintComponent
以获得背景图像,但我什么也看不见。当我删除我覆盖的paintComponenet
方法,并为该面板的背景设置颜色时,JPanel
似乎填充了JApplet
而仍然没有任何组件nt可见:-S我尝试了不同的布局。我还将面板放在另一个面板的中心,该面板填充了我的JApplet
,但没有任何更改,仍然没有组件和背景图像可见:(
上面的代码可以编译。我甚至不能将Keylistener
添加到我的JPanel
或我的JApplet
。我使用java.awt.KeyEventDispatcher
和DispatcheckKeyEvent(KeyEvent e)
在控制台中打印了一些东西,但打印了3次:(
我已经覆盖了JPanel的paintComponent以获得背景图像
但您没有将自定义组件添加到小程序:
//boardPanel = new JPanel();
boardPanel = new ClientViewManager();
此外:
panel.revalidate();
panel.repaint()
我建议您使用Netbeans的GUI生成器来构建这样一个GUI,然后将生成的代码与您的代码进行比较。Netbeans的结果对帮助您创建swing代码非常有用。小兔子富福是对的。@Maryam:“plzzzzz help”请1)停止使用诸如“plzzz”之类的无意义拼写2)停止对我们大喊大叫。3)问一个问题。-1,这是一个评论,不是问题的答案。即使这是一个答案,我也会投反对票,因为你永远不应该将你的代码与生成的代码进行比较,因为代码生成从来都不是有效的。好吧,这是一个评论,我同意,但对于解决这个问题,这是我能想到的更严格的方式,而不是改变到处都是g代码。我没有使用过Netbeans,我想学习它需要一些时间。不幸的是,我没有足够的时间学习它。我应该在下周发送我的作业。但是,谢谢你的建议,;)@jaime:
“为了解决这个问题,这是我能想到的更直接的方法,而不是到处更改代码“
,因此无法理解Swing的工作原理。这个解决方案不会帮助原始海报学到任何东西。@Hovercraft满是鳗鱼你误解了我,首先你用netbeans创建GUI,然后你检查生成的代码,然后你可以将生成的副本作为参考谢谢你回答我,但我无法理解你所说的“你没有将自定义组件添加到你的小程序”是什么意思:“>[我把它放在运行方法中]顺便说一句,我想我做了你说的,我覆盖了getPreferredSize(),但sry my JApplet仍然是空的:(我想问题出在图像上,因为我看到标签里面有文本,但没有面板的背景图像:(阅读我的编辑。你的代码没有任何意义。在init()中)方法添加一个空面板。我给你的简单解决方案是此时添加ClientViewManager。出于某种原因,在start()中方法创建一个线程来添加ClientViewManager。这非常令人困惑。当我使用Appletviewer运行代码时,图像可以很好地加载。通常在使用小程序时,您不会使用图像图标来加载图像。我建议您查看关于“如何制作小程序”()的Swing教程举个如何加载图像的例子。你说得对。我的代码看起来很混乱,但这段代码是一个更大类的一部分。你介意告诉我应该怎么做才能在我的小程序中放置一个keylistener吗?(它不起作用4我)我使用了KeyEventDispatcher,这很有效,但问题是所有事情都会发生3次:-/每次击键都会生成3个事件,“按下按钮、键入按钮、释放按钮",因此您需要检查事件代码。KeyEvents转到具有焦点的组件。因此您需要向小程序添加一个面板。使面板可聚焦,并将KeyLIstener添加到面板。如果您需要更多帮助,则需要创建另一个SSCCE,该SSCCE只处理该问题,并创建另一个问题,因为每个线程应该只有一个问题问题。然后您可以接受此线程的答案并继续。
//boardPanel = new JPanel();
boardPanel = new ClientViewManager();