2010-07-15 21 views
2

行,所以我有这个小程序,多数民众赞成这样Java小程序按钮

  • BorderLayout.CENTER - (在此是的JPanel)
  • BorderLayout.EAST - (在此是一个新的网格布局(4,5)
  • BorderLayout.SOUTH - (在此是一个TextArea)

反正小程序,我不得不悬停在该按钮,看到他们,他们不画有我猜,但我加入。他们在init()方法中...所以我不知道我在做什么w荣和为什么这样做。

setLayout(new BorderLayout()); 
JPanel invOne = new JPanel(new GridLayout(5,4)); 
JPanel game = new JPanel(); 
add(invOne, BorderLayout.EAST); 
add(game, BorderLayout.CENTER); 
add(c, BorderLayout.SOUTH); 

invOne.setBounds(416,0, 60, 28); 

for (int i = 0, j = 20; i < 20; i = i+1, j = j-1) { 
    invOne.add(new JButton("SLOT " + j)); 
    invOne.setBounds(32,32,100,100); 
    invOne.setFocusable(false); 
} 

game.setBounds(0,0, 416, 288); 
repaint(); 
+0

然而,你又发布了一些无助于我们解决问题的随机代码。过去你被要求参加SSCCE。学习如何创建并发布它,这样我们就不会浪费时间猜测你这次做错了什么愚蠢的错误。 Swing教程中有很多示例。下载并测试它们并学习发布适当的问题。是的,教程甚至有一个简单的JApplet示例。 – camickr 2010-07-15 15:20:55

+0

看到我的几个职位,我添加了SSCCE。 – nn2 2010-07-15 15:35:06

+0

PS-从技术上讲,我发布了一个合适的问题。 – nn2 2010-07-15 15:35:22

回答

2

你想用所有setBounds()调用完成什么?您可以让pack()根据里面的内容设置面板的尺寸,或者将的范围设置为,以便您可以看到该面板所在的位置。特别是尺寸为32x32像素的电话根本没有帮助。


编辑:

,我发现这些问题:

  • 至于另一个海报所说,你混合Swing和AWT组件。这不太好。从本质上讲,如果您使用的某些组件在开始时有一个“J”,那么您将需要为它们全部使用“J”。 AWT现在被认为是“老派”。这有点令人困惑,因为GUI中使用的某些类和组件没有J。我想你需要仔细研究好的例子,或者上课。

  • 出于某种原因,applet并不想工作,直到我给TextArea(现在称为JTextArea)显式的行/列计数。我将new TextArea()更改为new JTextArea(3,20)

  • 最大的问题可能是空的paint()方法。我不知道applet如何显示任何内容?您可能已经删除了paint()方法;我通过拨打super.paint()来修复它。

  • 最后,类名(例如bl)应以大写字符开头。 IdeOne中的编译器为此抱怨。

Here's my fixed code

快乐黑客!

+0

确定这里是代码itSELF ... http://www.dasdas.pastebin.com/ftwpx7rK它只是GUI ...当我尝试编译时,我得到: C:\ Documents and Settings \ djasnowski \ My Documents \ bl.java:33:找不到符号 symbol:method pack() location:class bl \t \t this.pack(); – nn2 2010-07-15 15:14:38

+1

我希望尽快修复它。我会回报。 – 2010-07-15 15:16:38

+0

我明白了。我将Applet改为JApple,但现在灰色的jPanel重叠了绘制的图块(drawImage)图块... – nn2 2010-07-15 15:48:00

1

在面板中添加所有组件后,是否明确地调用“pack()”(或“repaint()”)方法? 不调用这些方法可能会导致帧中出现图形问题...

+0

好的,我添加了代码。正如你所看到的,我添加了重绘(),但没有运气...(顺便说一下,这是一个小程序而不是帧) – nn2 2010-07-15 14:30:53

2

找到one page (in german language)其中描述了相同的问题:JButton小部件只有在悬停后才显示。

问题在于AWT和Swing组件/小部件混合在一起。我从代码片段中看不到这种情况,但是如果您有java.awt.*导入,请禁用它们,请重构代码以仅使用Swing类并再次尝试/希望获得最佳效果。

另一个建议是明确地为每个按钮做一个setVisible(true),但提问者说,这对他的情况没有帮助。

1

您正在Applet中使用Swing组件。你应该使用JApplet。只需将extends Applet更改为extends JApplet即可。