最近做一个程序,包含1个继承于JFrame frame和2个继承于JPanel面板panel1和panel2...两个面板都用含另一面板对象做参数的构造方法在JFrame中初始化,
panel2上定义了一个JTextArea jtextarea,想在panel1中调用panel2.jtextarea.setText(.......)来设置panel2上文本区jtextarea上的文字,
可是没有一点效果PS:append(),getText()等等方法都没效......其他方法有些却有效比如输出 System.out.println( panel2.jtextarea.isEnabled() ); 可以得到true请高手帮忙
panel2上定义了一个JTextArea jtextarea,想在panel1中调用panel2.jtextarea.setText(.......)来设置panel2上文本区jtextarea上的文字,
可是没有一点效果PS:append(),getText()等等方法都没效......其他方法有些却有效比如输出 System.out.println( panel2.jtextarea.isEnabled() ); 可以得到true请高手帮忙
我写的是五子棋程序,panel1是棋板,panel2是游戏功能面板,那个文本区是显示信息的...我是想在棋板panel1上的鼠标点击事件可以引起panel2上文本区上文字的变化
比如"黑棋走棋""黑棋获胜之类的"
程序太长了 简单的写下:
class frame extends JFrame
{
public frame()
{
panel_1=new panel1(panel2);
//互相传递对象进行通信,前面我已经说过除了append(),getText(),setText()等引起组件变化的方法无效,
组件的其他判断类型的方法比如is...开头的都可以在控制台上输出TRUE或FALSE
panel_2=new panel2(panel1);
}
panel2 panel_2;
panel1 panel_l;
}class panel1 extends JPanel
{
public panel1(panel2 panel_2)
{
this.panel_2=panel_2;
.....
}
private class mouseListener implements MouseAdapter
{
public void mouseClicked(MouseEvent click)
{
panel_2.abc();//OK 我觉得证明了这两个类可以通信
panel_2.textarea.setText("....");//就是这里不能实现!我用repaint方法重画也没用
System.out.println(panel_2.textarea.isEnabled());//OK,输出TRUE
}
}
panel2 panel_2;
}class panel2 extends JPanel
{
public panel2(panel1 panel_1)
{
this.panel_1=panel_1;
textarea=new textarea();
textarea.setBounds(....);
textarea.setText("...."); //这里是可以的
add(textarea);
.....
}
public void abc()
{
System.out.println("abc");
}
panel1 panel_1;
JTextArea textarea;
}