从Component获取text属性

时间:2018-01-20 01:41:53

标签: java swing

我有一个名为JPanel的{​​{1}},其中包含100 panelCreatePuzzle个。 我用了

JButton

获取所有按钮的数组。现在我要打印每个按钮的文本。我不知道如何做到这一点。我尝试了以下方法:

Component[] cells = panelCreatePuzzle.getComponents();

哪个打印包含文字的内容: for (Component cell:cells){ System.out.println(cell.toString()); } 我当然可以从这个字符串中提取它,但有没有更直接的方法只是给我一些没有其他内容的文本?

1 个答案:

答案 0 :(得分:2)

有更好的方法来实现你想要做的事情,但是......

for (Component cell:cells){                   
    if (cell instanceof JButton) {
        JButton btn = (JButton)cell;
        String text = btn.getText();
    }
}

基本上,您需要确定该组件是否实际上是JButton,如果是,您可以安全地投射它并使用它。

这是有限的,有点蛮力。一个更好的方法可能是提供一个getter,它返回一个代表单元格的按钮数组(而不是查看所有按钮,可能包含你不想要的东西)。

可能最好的解决方案是使用某种模型,它代表当前状态,然后可以用来通过UI显示并以解耦方式以你想要的形式进行操作。

这涉及到大量的概念,包括“模型 - 视图 - 控制器”和“观察者模式”,你应该花时间去研究和学习的概念