如何允许另一个类从另一个类修改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)指令?
答案 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的工作原理。