我是JSwing的新手,所以请原谅我初学者的一些问题。
在阅读了有关如何使用顶级容器的教程后,我在按钮中的actionPerformed事件中尝试了以下代码:
private void colgarActionListener(java.awt.event.ActionEvent evt) {
auxButton = new JButton();
auxButton.setSize(100,30);
auxButton.setText("Me button");
getContentPane().add(auxButton);
getContentPane().doLayout();
}
正如您所料,它不起作用。该按钮不会出现。如果我尝试一个荒谬的事情,如:
getContentPane().setBackground(Color.red);
而不是
getContentPane().doLayout();
它有效。我做错了什么?
最后一个:如果我编写一个作为自定义ActionListener(带有参数的构造函数)的类,我应该把它放在哪里?作为GUI代码中的私有类?它只是感觉很脏......或者作为另一个包内的公共类。可能?
非常感谢。
问候。
马丁
答案 0 :(得分:3)
您将需要了解布局管理器的工作方式以及如何使用它们是使用Swing的关键之一(顺便说一下,不是JSwing)。 Layout Manager Tutorial是一个很好的起点。
首先,避免使用null布局和setBounds(...)
另一方面,contentPane通常使用BorderLayout。另外,我以前从未见过doLayout()
以这种方式使用过。相反,在更改其组件后,我通常会在容器上调用validate()
或revalidate()
后跟repaint()
。
答案 1 :(得分:1)
是的,ActionListener通常不仅实现为私有类,而且实现为匿名类,完全在使用站点。匿名类是你写的时候
x.addActionListener(new ActionListener() { public void actionPerformed(Event e) {
... stuff to do ...
}});