好,我有这样的小程序


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

最佳答案

您想用所有setBounds()调用完成什么?您可以根据内部内容让pack()设置面板的大小,或者一次将边界设置到希望看到该面板的位置。尤其是32x32像素大小的呼叫完全没有帮助。



编辑:

我发现了以下问题:


正如其他海报所提到的,您正在混合使用Swing和AWT组件。效果不好。本质上,如果您使用的某些组件的开头都带有“ J”,则所有组件都将使用“ J”。 AWT现在被认为是“老派”。这有点令人困惑,因为GUI中使用的某些类和组件没有J。我想您需要仔细研究良好的示例或查找类。
由于某种原因,该小程序直到我为TextArea(现在称为JTextArea)提供了明确的行/列计数才希望工作良好。我将new TextArea()更改为new JTextArea(3,20)
最大的问题可能是空的paint()方法。我想知道小程序怎么显示什么?您可能已经删除了paint()方法;我通过调用super.paint()修复了它。
最后,类名(例如bl)应以大写字母开头。为此,IdeOne中的编译器对我发牢骚。


Here's my fixed code

祝您黑客愉快!

关于java - Java小程序按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3256467/

10-10 20:08