sky_xin 2015-08-26 10:12 采纳率: 50%
浏览 3011
已采纳

一个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);

}
}

  • 写回答

1条回答 默认 最新

  • pvfayl 2015-08-30 12:25
    关注

    有一个关键性的问题:B继承于JscrollPane ,C是Jpane。。。类不一样,怎么可以添加呢,或是你表达错了???

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序