java小程序按钮

时间:2010-07-15 14:23:43

标签: java swing applet

好的,所以我有这样的applet

  • BorderLayout.CENTER - (在此范围内是JPanel)
  • BorderLayout.EAST - (这是一个新的GridLayout(4,5)
  • BorderLayout.SOUTH - (在这是一个TextArea)

无论如何,在小程序上,我必须通过按钮来查看它们。他们不在那里画画,但我在init()方法中添加它们......所以我不知道我做错了什么以及为什么这样做。

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();

4 个答案:

答案 0 :(得分:2)

您想要通过所有setBounds()来电完成什么?您可以让pack()根据内部的内容设置面板的大小,或者将的边界设置为您想要查看该面板的位置。特别是尺寸为32x32像素的通话根本没有帮助。


编辑:

我发现了这些问题:

  • 正如另一张海报所提到的,你正在混合使用Swing和AWT组件。这不太好用。基本上,如果您使用的某些组件在开头有一个“J”,那么您将希望为所有组件使用“J”。 AWT现在被认为是“老派”。这有点令人困惑,因为GUI中使用的某些类和组件没有J。我想你需要仔细研究好的例子或者查看课程。

  • 出于某种原因,在我向TextArea(现在称为JTextArea)提供显式行/列计数之前,applet不希望正常工作。我将new TextArea()更改为new JTextArea(3,20)

  • 最大的问题可能是空paint()方法。我想知道applet是如何显示的?您可以删除paint()方法;我通过调用super.paint()修正了它。

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

Here's my fixed code

快乐的黑客攻击!

答案 1 :(得分:2)

发现one page (in german language)描述了同样的问题:JButton小部件仅在将鼠标悬停在它们之后显示。

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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