问题写在注释里了。import javax.swing.JFrame;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;public class TestFunc extends JFrame
{
public static void main(String[] args)
{
new TestFunc().lanchFrame();
} /*
* 为程序加一个Frame界面
*/
public void lanchFrame()
{
setSize(400, 300);
setLocation(300, 200);
setTitle("Just For Test");
/*
* 下面在frame里添加了一个可以让frame分左右两栏的JSplitPane组件
* 并执行自定义的addCompoment(JSplitPane js)方法
*/
JSplitPane js = new JSplitPane();
add(js);
addCompoment(js);
setVisible(true);
} /*
* 这个方法是将JSpitPane组件左边栏和右边栏各放一个可以显示
* 文本内容的JTextArea,两个JTextArea组件各显示一句话
*
* 按我以前学的知识,方法头部的列表里声明的变量或对象是局部的变量、对象。
* 并不能对外提供功能,也就是说下面这个方法执行了等于没执行。
* 但是事实和我料想的相反。
* 为什么会这样啊。JAVA中什么时候会发生这种情况啊。
*/
public void addCompoment(JSplitPane js)
{
//js是个成员内部对象哦。
JTextArea leftArea = new JTextArea("我是方法里的成员对象,你看不到我的");
js.setLeftComponent(leftArea);
JTextArea rightArea = new JTextArea("我也是方法里的成员对象");
js.setRightComponent(rightArea);
}
}
import javax.swing.JSplitPane;
import javax.swing.JTextArea;public class TestFunc extends JFrame
{
public static void main(String[] args)
{
new TestFunc().lanchFrame();
} /*
* 为程序加一个Frame界面
*/
public void lanchFrame()
{
setSize(400, 300);
setLocation(300, 200);
setTitle("Just For Test");
/*
* 下面在frame里添加了一个可以让frame分左右两栏的JSplitPane组件
* 并执行自定义的addCompoment(JSplitPane js)方法
*/
JSplitPane js = new JSplitPane();
add(js);
addCompoment(js);
setVisible(true);
} /*
* 这个方法是将JSpitPane组件左边栏和右边栏各放一个可以显示
* 文本内容的JTextArea,两个JTextArea组件各显示一句话
*
* 按我以前学的知识,方法头部的列表里声明的变量或对象是局部的变量、对象。
* 并不能对外提供功能,也就是说下面这个方法执行了等于没执行。
* 但是事实和我料想的相反。
* 为什么会这样啊。JAVA中什么时候会发生这种情况啊。
*/
public void addCompoment(JSplitPane js)
{
//js是个成员内部对象哦。
JTextArea leftArea = new JTextArea("我是方法里的成员对象,你看不到我的");
js.setLeftComponent(leftArea);
JTextArea rightArea = new JTextArea("我也是方法里的成员对象");
js.setRightComponent(rightArea);
}
}
都只是一个名字而已。就像有两个人,即使同名同姓,还是不同的人,虽然大多数情况下,两个人的名字是不同的。而在这里,有两个人同名同姓了。而实际上,无论他们叫什么,在这里这两个变量都是不同的。
也就是说你在lanchFrame()
调用的addCompoment()中传入的参数指向的就是你实例化的js
所以可以在函数中对js进行操作