程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> swing-一個JPanel中的按鈕點擊後往另一個JPanel中添加一個JTextField

swing-一個JPanel中的按鈕點擊後往另一個JPanel中添加一個JTextField

編輯:編程綜合問答
一個JPanel中的按鈕點擊後往另一個JPanel中添加一個JTextField

我現在實現的是有一個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。。。類不一樣,怎麼可以添加呢,或是你表達錯了???

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved