从另一个类

时间:2017-01-08 01:31:22

标签: java swing

如何允许另一个类从另一个类修改JTextArea?

例如,假设我有两个类:

Panel.java

public class Panel extends JPanel
{
    private JTextArea instructions;

    public Panel()
    {
        instructions = new JTextArea(15,15);
        add(instructions);
    }
}

MenuBar.java

public class MenuBar extends JMenuBar
{
    private JMenuItem openMenuItem,;

    public MenuBar()
    {
        JMenu fileMenu = new JMenu("File");
        openMenuItem = new JMenuItem("Open");
        fileMenu.add(openMenuItem);
        add(fileMenu);

        MenuListener listener = new MenuListener();
        openMenuItem.addActionListener(listener);
    }

    private class MenuListener implements ActionListener
    {
        public void actionPerformed(ActionEvent event)
        {
            if( event.getSource() == openMenuItem )
            {
                // change value of JTextArea from Panel.java
            }
        }
    }
}

如何从MenuBar.class修改JTextArea(Panel.java)指令?

1 个答案:

答案 0 :(得分:0)

首先,由于以下行中的逗号,MenuBar的代码片段无法编译:

print s.decode('unicode-escape') # 子
print len(s.decode('unicode-escape')) # 1

现在你有一个类属性指令,它是类Panel中的JTextArea对象。这是私人的,所以只有班级小组才能到达,这很好。如果你想通过另一个类获取或设置该属性的值,可以为它添加一个getter / setter。

在Panel中添加以下代码:

private JMenuItem openMenuItem,;

setInstructions是您要查找的方法,您可以将指令TextArea设置为您传递的值作为参数。

请使用以下代码修改MenuBar中的私有类,以显示我的意思。

public void setInstructions(JTextArea instructions) {
        this.instructions = instructions;
    }

    public JTextArea getInstructions() {
        return instructions;
    }

我还添加了一个测试打印来验证setter的工作原理。