我有一个名为JPanel
的{{1}},其中包含100 panelCreatePuzzle
个。
我用了
JButton
获取所有按钮的数组。现在我要打印每个按钮的文本。我不知道如何做到这一点。我尝试了以下方法:
Component[] cells = panelCreatePuzzle.getComponents();
哪个打印包含文字的内容:
for (Component cell:cells){
System.out.println(cell.toString());
}
我当然可以从这个字符串中提取它,但有没有更直接的方法只是给我一些没有其他内容的文本?
答案 0 :(得分:2)
有更好的方法来实现你想要做的事情,但是......
for (Component cell:cells){
if (cell instanceof JButton) {
JButton btn = (JButton)cell;
String text = btn.getText();
}
}
基本上,您需要确定该组件是否实际上是JButton
,如果是,您可以安全地投射它并使用它。
这是有限的,有点蛮力。一个更好的方法可能是提供一个getter,它返回一个代表单元格的按钮数组(而不是查看所有按钮,可能包含你不想要的东西)。
可能最好的解决方案是使用某种模型,它代表当前状态,然后可以用来通过UI显示并以解耦方式以你想要的形式进行操作。
这涉及到大量的概念,包括“模型 - 视图 - 控制器”和“观察者模式”,你应该花时间去研究和学习的概念