我现在实现的是有一个Class A里面是初始化窗体的,然后通过JSplitPane将窗体分成左右两部分,左边部分是new Class B,B是继承JScrollPane的,右半部分是装的Class C,C也是继承JPane,现在要实现的就是B中有一个按钮,点击这个按钮的时候往C中添加一个JTextField,现在的问题是不知道如何取得C ,我直接在B的按钮监听中new一个C的面板添加JTextField后,窗口中没有变化,求大神指导。
代码类似这样,实际中比这个更复杂,代码粘过去就可以跑:
package com.test;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
public class A extends JFrame {
public A(){
super("测试");
setSize(1000,800);
//激活窗体的关闭按钮
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体的初始化位置(屏幕中央)
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screenSize=kit.getScreenSize();
int width=screenSize.width;
int height=screenSize.height;
int x=(width-WIDTH)/2;
int y=(height-HEIGHT)/2;
setLocation(x,y);
final JSplitPane hSplitPane = new JSplitPane();
B b = new B();
JScrollPane bPanel = b.getB();
JPanel c = new C();
hSplitPane.setLeftComponent(bPanel);
hSplitPane.setRightComponent(c);
//设置分割栏左侧的默认宽度
hSplitPane.setDividerLocation(230);
//让分隔线显示出箭头
hSplitPane.setOneTouchExpandable(false);
getContentPane().add(hSplitPane);
show();
}
public static void main(String[] args) {
A a = new A();
a.setVisible(true);
}
}
package com.test;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
public class B extends JScrollPane {
public JScrollPane getB(){
JButton jb = new JButton("添加");
add(jb);
jb.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
JTextField field = new JTextField();
field.setText("你选取ssssssssssssssssssssssss:");
C mainPanel = new C();
mainPanel.add(field);
//如何向C中的p1添加field控件?
System.out.println("如何向C中的p1添加field控件?");
}
});
JScrollPane jspane = new JScrollPane(jb);
return jspane;
}
}
package com.test;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import org.json.JSONObject;
import com.yeeda.pollyover.MainPanel;
public class C extends JPanel {
public C(){
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JLabel jl = new JLabel("aaaaaaaaaa");
JButton ok = new JButton("确定");
add(p1,BorderLayout.CENTER);
add(p2,BorderLayout.SOUTH);
p1.add(jl);
p2.add(ok);
}
}