Java 是否仍然可以从JFrame返回特定元素?
假设JFrame包含9个JTextFields,如下所示:Java 是否仍然可以从JFrame返回特定元素?,java,arrays,swing,jtextfield,Java,Arrays,Swing,Jtextfield,假设JFrame包含9个JTextFields,如下所示: public static JFrame generateFrame(){ JFrame frame = new JFrame(); Container c = frame.getContentPane(); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(3,3)); JTextField[]textFields = new
public static JFrame generateFrame(){
JFrame frame = new JFrame();
Container c = frame.getContentPane();
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3,3));
JTextField[]textFields = new JTextField[9];
for(int i=0; i<9;i++){
textFields[i]= new JTextField(1);
textFields[i].setFont(new Font("Sans-serif", Font.BOLD, 30));
panel.add(textFields[i]);
}
c.add(panel);
frame.setVisible(true);
frame.setSize(300,300);
return frame;
}
是否仍然可以从“游戏框架”对象中提取所有文本字段?类似于DOM中docyment.getElementByTagName(“元素”)的等价物?请尝试以下内容
Component[] components = gameFrame.getComponents();
for (int i = 0; i < components.length; i++) {
if (components[i] instanceof JTextField) {
//DO what you want with the text field here
}
}
Component[]components=gameFrame.getComponents();
对于(int i=0;i
希望有帮助。尝试以下内容
Component[] components = gameFrame.getComponents();
for (int i = 0; i < components.length; i++) {
if (components[i] instanceof JTextField) {
//DO what you want with the text field here
}
}
Component[]components=gameFrame.getComponents();
对于(int i=0;i
希望有帮助。首先,您需要引用contentpane,因为您已将JPanel添加到contentpane,然后您可以从JPanel获取字段
JFrame gameFrame = generateFrame();
JPanel panel = (JPanel) gameFrame.getContentPane().getComponent(0);
Component[] comp = panel.getComponents();
for (Component c : comp) {
JTextField field = (JTextField) c;
System.out.println("value : " + field.getText());
}
首先,您需要引用contentpane,因为您已经将您的JPanel添加到contentpane,然后您可以从JPanel获取您的字段
JFrame gameFrame = generateFrame();
JPanel panel = (JPanel) gameFrame.getContentPane().getComponent(0);
Component[] comp = panel.getComponents();
for (Component c : comp) {
JTextField field = (JTextField) c;
System.out.println("value : " + field.getText());
}
如果组件都在一个面板上,那么可以使用该面板的getComponents()方法,如前所述
如果在多个面板上有组件,则需要使用递归来获取所有组件。在这种情况下,您可能会发现Darryl的类很方便。如果组件都在一个面板上,您可以使用面板的getComponents()方法,正如前面所建议的那样
如果在多个面板上有组件,则需要使用递归来获取所有组件。在这种情况下,您可能会发现Darryl的类很方便。没有实现这个抽象,请看没有实现这个抽象,请看好的,我知道这是如何工作的。但我会等着看是否有类似DOM的解决方案,如果没有,我就接受你的解决方案。无论如何,你会得到一张赞成票:)请添加
if(components[i]instanceof JTextField)
以获得更好的答案添加了你的建议@mKorbel。我认为这个解决方案不适用于这种特殊情况。好的,我知道这是怎么回事。但我会等着看是否有类似DOM的解决方案,如果没有,我就接受你的解决方案。无论如何,你会得到一张赞成票:)请添加if(components[i]instanceof JTextField)
以获得更好的答案添加了你的建议@mKorbel。我不认为这个解决方案适用于这种特殊情况。只对ContentPane使用+1,在这种情况下可能不重要,但只对ContentPane使用good catch+1,在这种情况下可能不重要,但这是个好机会