我現在實現的是有一個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);
}
}
有一個關鍵性的問題:B繼承於JscrollPane ,C是Jpane。。。類不一樣,怎麼可以添加呢,或是你表達錯了???