Java在JFrame中设置/获取所有组件的文本

时间:2016-11-23 23:06:23

标签: java swing components

我正在尝试访问JFrame中的所有组件文本,但是使用我发现的方法我无法做到。

    for(Component c : this.getComponents()) {
        c.setText(TRNASLATE(c.getText()));
        // does not work: no set and getText methods
    }

有没有办法获取或设置组件的文本?

在您提出问题之前:我正在尝试翻译JFrame上的元素而不手动列出其组件并设置其文本(将需要很长时间逐个列出它们)

抱歉我的英文。

2 个答案:

答案 0 :(得分:1)

您可以使用QuaternarySearch(A[0. . n-1], value, low, high) while high ≥ 1 p1/4 = low + ((high – low) / 4) //first quarter point p1/2 = low + ((high – low) / 2) //second quarter point p3/4 = low + (3(high – low) / 4) //third quarter point if A[p1/4] = value return A[p1/4] else if A[p1/2] = value return A[p1/2] else if A[p3/4] = value return A[p3/4] else if A[p1/4] > value return QuaternarySearch(A, value, low, p1/4-1) else if A[p1/2] > value return QuaternarySearch(A, value, p1/4+1, p1/2-1) else if A[p3/4] > value > A[p1/2] return QuaternarySearch(A, value, p1/2+1, p3/4-1) else //if A[p3/4] < value return QuarterSearch(A, value, p3/4 + 1, high) 来检查组件是否是某种类型,即为其键入的强制类型。大多数组件都有getText()方法。

示例:

instanceof

根据需要使用尽可能多的组件类型重复for(Component c : this.getComponents()) { if(c instanceof JLabel){ JLabel label = (JLabel) c; String text = c.getText(); } }

答案 1 :(得分:0)

老问题,但我希望这对某人有所帮助 (扩展了 Razi 的回答)

public static void setSwingObjectText(Object object, String text) {
    //generated
    if (object instanceof javax.swing.AbstractButton)
        ((javax.swing.AbstractButton) object).setText(text);
    else if (object instanceof javax.swing.DefaultListCellRenderer)
        ((javax.swing.DefaultListCellRenderer) object).setText(text);
    else if (object instanceof javax.swing.JButton)
        ((javax.swing.JButton) object).setText(text);
    else if (object instanceof javax.swing.JCheckBox)
        ((javax.swing.JCheckBox) object).setText(text);
    else if (object instanceof javax.swing.JCheckBoxMenuItem)
        ((javax.swing.JCheckBoxMenuItem) object).setText(text);
    else if (object instanceof javax.swing.JEditorPane)
        ((javax.swing.JEditorPane) object).setText(text);
    else if (object instanceof javax.swing.JFormattedTextField)
        ((javax.swing.JFormattedTextField) object).setText(text);
    else if (object instanceof javax.swing.JLabel)
        ((javax.swing.JLabel) object).setText(text);
    else if (object instanceof javax.swing.JMenu)
        ((javax.swing.JMenu) object).setText(text);
    else if (object instanceof javax.swing.JMenuItem)
        ((javax.swing.JMenuItem) object).setText(text);
    else if (object instanceof javax.swing.JPasswordField)
        ((javax.swing.JPasswordField) object).setText(text);
    else if (object instanceof javax.swing.JRadioButton)
        ((javax.swing.JRadioButton) object).setText(text);
    else if (object instanceof javax.swing.JRadioButtonMenuItem)
        ((javax.swing.JRadioButtonMenuItem) object).setText(text);
    else if (object instanceof javax.swing.JTextArea)
        ((javax.swing.JTextArea) object).setText(text);
    else if (object instanceof javax.swing.JTextField)
        ((javax.swing.JTextField) object).setText(text);
    else if (object instanceof javax.swing.JTextPane)
        ((javax.swing.JTextPane) object).setText(text);
    else if (object instanceof javax.swing.JToggleButton)
        ((javax.swing.JToggleButton) object).setText(text);
    else if (object instanceof javax.swing.plaf.basic.BasicArrowButton)
        ((javax.swing.plaf.basic.BasicArrowButton) object).setText(text);
    else if (object instanceof javax.swing.plaf.basic.BasicComboBoxRenderer)
        ((javax.swing.plaf.basic.BasicComboBoxRenderer) object).setText(text);
    else if (object instanceof javax.swing.plaf.metal.MetalComboBoxButton)
        ((javax.swing.plaf.metal.MetalComboBoxButton) object).setText(text);
    else if (object instanceof javax.swing.plaf.metal.MetalScrollButton)
        ((javax.swing.plaf.metal.MetalScrollButton) object).setText(text);
    else if (object instanceof javax.swing.table.DefaultTableCellRenderer)
        ((javax.swing.table.DefaultTableCellRenderer) object).setText(text);
    else if (object instanceof javax.swing.text.JTextComponent)
        ((javax.swing.text.JTextComponent) object).setText(text);
    else if (object instanceof javax.swing.tree.DefaultTreeCellRenderer)
        ((javax.swing.tree.DefaultTreeCellRenderer) object).setText(text);
    else if (object instanceof javax.swing.JDialog)
        ((javax.swing.JDialog) object).setTitle(text);
    else if (object instanceof javax.swing.JFrame)
        ((javax.swing.JFrame) object).setTitle(text);
    else if (object instanceof javax.swing.JInternalFrame)
        ((javax.swing.JInternalFrame) object).setTitle(text);
    else if (object instanceof javax.swing.border.TitledBorder)
        ((javax.swing.border.TitledBorder) object).setTitle(text);
}

public static String getSwingObjectText(Object object) {
    //generated
    if (object instanceof javax.swing.AbstractButton)
        return ((javax.swing.AbstractButton) object).getText();
    if (object instanceof javax.swing.DefaultListCellRenderer)
        return ((javax.swing.DefaultListCellRenderer) object).getText();
    if (object instanceof javax.swing.JButton)
        return ((javax.swing.JButton) object).getText();
    if (object instanceof javax.swing.JCheckBox)
        return ((javax.swing.JCheckBox) object).getText();
    if (object instanceof javax.swing.JCheckBoxMenuItem)
        return ((javax.swing.JCheckBoxMenuItem) object).getText();
    if (object instanceof javax.swing.JEditorPane)
        return ((javax.swing.JEditorPane) object).getText();
    if (object instanceof javax.swing.JFormattedTextField)
        return ((javax.swing.JFormattedTextField) object).getText();
    if (object instanceof javax.swing.JLabel)
        return ((javax.swing.JLabel) object).getText();
    if (object instanceof javax.swing.JMenu)
        return ((javax.swing.JMenu) object).getText();
    if (object instanceof javax.swing.JMenuItem)
        return ((javax.swing.JMenuItem) object).getText();
    if (object instanceof javax.swing.JPasswordField)
        return ((javax.swing.JPasswordField) object).getText();
    if (object instanceof javax.swing.JRadioButton)
        return ((javax.swing.JRadioButton) object).getText();
    if (object instanceof javax.swing.JRadioButtonMenuItem)
        return ((javax.swing.JRadioButtonMenuItem) object).getText();
    if (object instanceof javax.swing.JTextArea)
        return ((javax.swing.JTextArea) object).getText();
    if (object instanceof javax.swing.JTextField)
        return ((javax.swing.JTextField) object).getText();
    if (object instanceof javax.swing.JTextPane)
        return ((javax.swing.JTextPane) object).getText();
    if (object instanceof javax.swing.JToggleButton)
        return ((javax.swing.JToggleButton) object).getText();
    if (object instanceof javax.swing.plaf.basic.BasicArrowButton)
        return ((javax.swing.plaf.basic.BasicArrowButton) object).getText();
    if (object instanceof javax.swing.plaf.basic.BasicComboBoxRenderer)
        return ((javax.swing.plaf.basic.BasicComboBoxRenderer) object).getText();
    if (object instanceof javax.swing.plaf.metal.MetalComboBoxButton)
        return ((javax.swing.plaf.metal.MetalComboBoxButton) object).getText();
    if (object instanceof javax.swing.plaf.metal.MetalScrollButton)
        return ((javax.swing.plaf.metal.MetalScrollButton) object).getText();
    if (object instanceof javax.swing.table.DefaultTableCellRenderer)
        return ((javax.swing.table.DefaultTableCellRenderer) object).getText();
    if (object instanceof javax.swing.text.JTextComponent)
        return ((javax.swing.text.JTextComponent) object).getText();
    if (object instanceof javax.swing.tree.DefaultTreeCellRenderer)
        return ((javax.swing.tree.DefaultTreeCellRenderer) object).getText();
    if (object instanceof javax.swing.JDialog)
        return ((javax.swing.JDialog) object).getTitle();
    if (object instanceof javax.swing.JFrame)
        return ((javax.swing.JFrame) object).getTitle();
    if (object instanceof javax.swing.JInternalFrame)
        return ((javax.swing.JInternalFrame) object).getTitle();
    if (object instanceof javax.swing.border.TitledBorder)
        return ((javax.swing.border.TitledBorder) object).getTitle();

    return null; //no matches
}