求助panel之间方法调用的问题(非常焦急) save方法写到包含左右两边Panel的主容器类里。左右两边的类分别提供统一的读写数据方法! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改变resultset的变量为public 就可以了吧 回复9p;我现在就是按照你说的那样作的,但是不行。因为左边的panel是动态加载的,如果save方法写在主容器内,调用左边的panel里的相应的读取数据textfield.gettext()取不到数据,全部为空。不过在左边的panel里面还是可以读取数据textfield.gettext()的。不知道如何是好。 回复ielinjie:你说把reseltset设置为public,但是我现在的问题是从左边的panel里面无法gettext()。 我现在把这个问题详细讲述以下:主frame -- frmmainfrmmain上面的按钮 button_savefrmmain上面的按钮 button_new左边的Tree -- jTreeMp右边固定的panel --panel_main右边的动态的panel -- panel_dwpspanel_dwps里面 textfield1,textfield2...panel_dwps里面的按钮button_save1我点中Tree的某个节点,然后点按钮button_new执行代码: void jButton_add_actionPerformed(ActionEvent e) { Panel_dwps panel_dwps = new Panel_dwps(); jPanelMain.removeAll(); jPanelMain.add(panel_dwps); jPanelMain.revalidate(); panel_dwps.setColProtect(true); panel_dwps.ps_add(); }用户然后在动态加载的panel_dwps中进行录入工作在panel_dwps里面有如下的方法来获取textfield数值并保存到数据库 public String ps_save() { String ps_code = new String(); String ps_name = new String(); long ps_no = 100; double ps_tc; int ps_class,ps_subclass,ps_maxv,ps_tn; String ps_note = new String(); String sql_add = new String(); //新增状态下的厂站保存 ResultSet rsps = null; //自动取得厂站编号 rsps = conn.executeQuery("SELECT max(ps_no) as ps_maxno FROM power_station "); try { while (rsps.next()){ //if里面要用getString,因为null的话无法被getInt得到 if (rsps.getString("ps_maxno") != null){ ps_no = rsps.getInt("ps_maxno") + 1; System.out.println(ps_no);} else ps_no = 100; } rsps.close(); } catch(Exception ex) { ex.printStackTrace(); } //取得用户录入的数据 ps_name = jTextPsname.getText(); ps_code = jTextPscode.getText(); //将string转化为double型的例子 ps_tc = Double.valueOf(jTextPstc.getText()).doubleValue(); ps_note = jTextPsnote.getText(); //将string转化为int型的例子 ps_tn = Integer.parseInt(jTextPstn.getText().trim()); ps_class = JCBPsclass.getitemIntvalue(JCBPsclass.getSelectedIndex()); //ps_subclass = JCBPssubclass.getitemIntvalue(JCBPssubclass.getSelectedIndex()); ps_subclass = 1; ps_maxv = JCBPsmaxv.getitemIntvalue(JCBPsmaxv.getSelectedIndex()); sql_add = "INSERT INTO power_station " + "VALUES (" + "'" + ps_no + "', " + "'" + ps_name + "', " + "'" + ps_class + "'," + "'" + ps_subclass + "', " + "'" + ps_code + "', " + "'" + ps_maxv + "', " + "'" + ps_tn + "', " + "'" + ps_tc + "', " + "'" + ps_note + "' " + ")"; try { System.out.println(sql_add); conn.executeInsert(sql_add); op.showMessageDialog(null,"厂站数据保存成功!"); } catch(Exception ex) { op.showMessageDialog(null,"厂站数据保存失败!"); ex.printStackTrace(); } return ps_name; }如果在主frame的button_save中调用此方法 void jButton_save_actionPerformed(ActionEvent e) { nodename = panel_dwps.ps_save(); System.out.println("ps_name = " + nodename); insertNode(nodename); //新增树节点 }则编译不报错,但是运行和单步调试都发现Gettext取的都是空值。如果在panel_dwps里的button_save1中调用此方法 void jButton_save1_actionPerformed(ActionEvent e) { ps_save(); }则Gettext一切正常。主Frame的属性声明部分如下:public class frmmain extends JFrame { Panel_dwps panel_dwps = new Panel_dwps(); Panel_dwmp panel_dwmp = new Panel_dwmp();基本情况如此。希望各位高手救我!不胜感激! void jButton_add_actionPerformed(ActionEvent e) { Panel_dwps panel_dwps = new Panel_dwps(); //这里的panel_dwps 用局部变量 panel_dwps = new Panel_dwps(); //使用-----------| jPanelMain.removeAll(); | jPanelMain.add(panel_dwps); | | jPanelMain.revalidate(); | panel_dwps.setColProtect(true); | panel_dwps.ps_add(); | | } | |///////// |public class frmmain extends JFrame { | Panel_dwps panel_dwps = new Panel_dwps(); | Panel_dwmp panel_dwmp = new Panel_dwmp(); <-------------------- 你的jButton_add_actionPerformed中的panel_dwmp 并不是你的frmmain 中的panel_dwmp 专门写一个简单的传递数据的类就可以了,把你往树上添加节点的方法定义成public.并把这个方法所在类的一个引用传递到save的那个类中. 新手学java,,各种不会~~~ ArrayList格式化输出到txt中 想实现一个界面,请教! webwork可以直接得到一个对象吗 急!做串口通讯的包comm.jar的windows版本在sun网站上找不到了???? 又是javamail,高手请进 放分,大家聊聊plaf吧 如何用java实现.NET中的导航菜单(如资源管理器)? 请问java web start和jre分别是什么意思啊?!(请路过的前辈赐教!!!) 帮我DEBUG一下? 3请问如何同屏显示多内码? 收购 --- 任何 B/S结构的软件
如果save方法写在主容器内,调用左边的panel里的相应的读取数据textfield.gettext()
取不到数据,全部为空。不过在左边的panel里面还是可以读取数据textfield.gettext()的。
不知道如何是好。 回复ielinjie:你说把reseltset设置为public,但是我现在的问题是从左边的panel里面无法
gettext()。
主frame -- frmmain
frmmain上面的按钮 button_save
frmmain上面的按钮 button_new
左边的Tree -- jTreeMp
右边固定的panel --panel_main
右边的动态的panel -- panel_dwps
panel_dwps里面 textfield1,textfield2...
panel_dwps里面的按钮button_save1我点中Tree的某个节点,然后点按钮button_new
执行代码:
void jButton_add_actionPerformed(ActionEvent e)
{
Panel_dwps panel_dwps = new Panel_dwps();
jPanelMain.removeAll();
jPanelMain.add(panel_dwps); jPanelMain.revalidate();
panel_dwps.setColProtect(true);
panel_dwps.ps_add(); }用户然后在动态加载的panel_dwps中进行录入工作
在panel_dwps里面有如下的方法来获取textfield数值并保存到数据库
public String ps_save()
{
String ps_code = new String();
String ps_name = new String();
long ps_no = 100;
double ps_tc;
int ps_class,ps_subclass,ps_maxv,ps_tn;
String ps_note = new String();
String sql_add = new String(); //新增状态下的厂站保存
ResultSet rsps = null;
//自动取得厂站编号
rsps = conn.executeQuery("SELECT max(ps_no) as ps_maxno FROM power_station ");
try {
while (rsps.next()){
//if里面要用getString,因为null的话无法被getInt得到
if (rsps.getString("ps_maxno") != null){
ps_no = rsps.getInt("ps_maxno") + 1;
System.out.println(ps_no);} else
ps_no = 100;
}
rsps.close();
}
catch(Exception ex) {
ex.printStackTrace();
} //取得用户录入的数据 ps_name = jTextPsname.getText();
ps_code = jTextPscode.getText();
//将string转化为double型的例子
ps_tc = Double.valueOf(jTextPstc.getText()).doubleValue();
ps_note = jTextPsnote.getText();
//将string转化为int型的例子
ps_tn = Integer.parseInt(jTextPstn.getText().trim());
ps_class = JCBPsclass.getitemIntvalue(JCBPsclass.getSelectedIndex());
//ps_subclass = JCBPssubclass.getitemIntvalue(JCBPssubclass.getSelectedIndex());
ps_subclass = 1;
ps_maxv = JCBPsmaxv.getitemIntvalue(JCBPsmaxv.getSelectedIndex()); sql_add = "INSERT INTO power_station " +
"VALUES (" +
"'" + ps_no + "', " +
"'" + ps_name + "', " +
"'" + ps_class + "'," +
"'" + ps_subclass + "', " +
"'" + ps_code + "', " +
"'" + ps_maxv + "', " +
"'" + ps_tn + "', " +
"'" + ps_tc + "', " +
"'" + ps_note + "' " +
")"; try {
System.out.println(sql_add);
conn.executeInsert(sql_add);
op.showMessageDialog(null,"厂站数据保存成功!");
}
catch(Exception ex) {
op.showMessageDialog(null,"厂站数据保存失败!");
ex.printStackTrace();
} return ps_name;
}如果在主frame的button_save中调用此方法
void jButton_save_actionPerformed(ActionEvent e) {
nodename = panel_dwps.ps_save();
System.out.println("ps_name = " + nodename);
insertNode(nodename); //新增树节点 }
则编译不报错,但是运行和单步调试都发现Gettext取的都是空值。如果在panel_dwps里的button_save1中调用此方法
void jButton_save1_actionPerformed(ActionEvent e) {
ps_save();
}
则Gettext一切正常。主Frame的属性声明部分如下:
public class frmmain extends JFrame {
Panel_dwps panel_dwps = new Panel_dwps();
Panel_dwmp panel_dwmp = new Panel_dwmp();基本情况如此。
希望各位高手救我!不胜感激!
{
Panel_dwps panel_dwps = new Panel_dwps(); //这里的panel_dwps 用局部变量
panel_dwps = new Panel_dwps(); //使用-----------|
jPanelMain.removeAll(); |
jPanelMain.add(panel_dwps); |
|
jPanelMain.revalidate(); |
panel_dwps.setColProtect(true); |
panel_dwps.ps_add(); |
|
} |
|
///////// |
public class frmmain extends JFrame { |
Panel_dwps panel_dwps = new Panel_dwps(); |
Panel_dwmp panel_dwmp = new Panel_dwmp(); <--------------------