gpt4 book ai didi

java - doLayout() 和 ActionListener 问题

转载 作者:行者123 更新时间:2023-11-29 03:47:46 25 4
gpt4 key购买 nike

我是 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 代码中的私有(private)类?感觉太脏了……或者作为另一个包中的公共(public)类。也许吧?

非常感谢。

问候。

马丁。

最佳答案

您需要阅读布局管理器的工作原理以及如何使用它们,因为这是使用 Swing(顺便说一下,不是 JSwing)的关键之一。 Layout Manager Tutorial是一个很好的起点。

一方面,避免使用空布局和 setBounds(...) 另一方面,contentPane 通常使用 BorderLayout。另外,我以前从未见过以这种方式使用过doLayout()。相反,我通常看到 validate()revalidate() 后跟 repaint() 在更改其组件后调用容器。

关于java - doLayout() 和 ActionListener 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10107091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com