java - 如何将返回的 ArrayList 中的 TextArea 添加到框架中?
问题描述
我正在尝试返回一个带有两个值、文本和文本区域的 ArrayList。但是,当我按下本应执行此操作的按钮时,什么也没有发生。你能解释一下为什么会这样吗?
返回 ArrayList 的方法:
public ArrayList<Object> newFile(){
ArrayList<Object> objectArrayList = new ArrayList<>();
TextArea textField = new TextArea("Type File Information.., ");
AtomicReference<String> fileText = new AtomicReference<>();
textField.addTextListener((textListener) -> {
fileText.set(textField.getText());
});
objectArrayList.add(String.valueOf(fileText));
objectArrayList.add(textField);
return objectArrayList;
}
}
执行该方法并获取文本区域的代码片段:
public void actionPerformed(ActionEvent e) {
String action = e.getActionCommand();
switch (action) {
case "New":
fileText = (String) newFile().get(0);
MainMenu mainMenu = new MainMenu();
mainMenu.add((TextArea)newFile().get(1));
break;
我添加处理程序的代码片段:
newFile.addActionListener(mainMenuHandler);
解决方案
你为什么使用 AWT。您至少应该使用 Swing。
MainMenu mainMenu = new MainMenu();
mainMenu.add((TextArea)newFile().get(1));
在您的情况下,您将文本区域添加到 MainMenu,但您从未将 MainMenu 添加到框架中。
因此,您需要将“mainMenu”添加到框架中。
此外,在使用 Swing 时,如果您将组件添加到可见框架,那么您需要调用revalidate()
并repaint()
在您将组件添加到的容器上。
推荐阅读
- sql - 在 SQL Server 中四舍五入十进制值
- html - 嵌套的 CSS 网格不显示嵌套项
- javascript - Javascript正则表达式多个小数
- python - 如何集成一个复杂的(不是在真实与复杂的定义中)函数
- ios - IOS/Objective-C:从异步方法中获取回调
- laravel-5 - 在 laravel 上实现 Oauth
- c++ - 具有多个条件的二维整数矩阵中的最大路径和 - 动态规划
- .net - 用 Braintree 进行单元测试的最佳方法是什么
- android - 编辑 EditText 在文本框下方编辑它
- angular - Rxjs 方法让调用者知道方法已完成,并缓存该结果