帮忙看看代码哪错了.

zhxjcooler 2007-02-13 10:14:31
import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JPanel;

public class ddd extends JPanel{

private JPanel ctrlPanel = new JPanel();

public ddd()
{
this.add(ctrlPanel,BorderLayout.SOUTH);
}
public void setCtrlPanel(JPanel ctrlPanel) {
this.ctrlPanel = ctrlPanel;
}

public JPanel getCtrlPanel()
{
return ctrlPanel;
}

}

class CommonPanel extends JPanel
{
private JButton addBtn = new JButton("添加");
private JButton updateBtn = new JButton("修改");
private JButton delBtn = new JButton("删除");
private JButton cancelBtn = new JButton("取消");

public CommonPanel()
{
add(addBtn);
add(updateBtn);
add(delBtn);
add(cancelBtn);
}
}

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ee extends ddd{
private JButton addBtn = new JButton("添加");
private JButton updateBtn = new JButton("修改");
private JButton delBtn = new JButton("删除");
private JButton cancelBtn = new JButton("取消");

ee()
{
// JPanel p3 = this.getCtrlPanel();
// p3.add(addBtn);
// p3.add(updateBtn);
// p3.add(delBtn);
// p3.add(cancelBtn);

JPanel p3 = new CommonPanel();

this.setCtrlPanel(p3);


}

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
JFrame ff = new JFrame();
ff.setSize(500,400);

ee e1 = new ee();
ff.add(e1);
ff.setVisible(true);
}

}




我用setCtrlPanel方法改变了this.ctrlPanel 的引用,为什么界面不会出现那4 个按钮。
...全文
277 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
interpb 2007-02-13
  • 打赏
  • 举报
回复
就是一个引用的问题

zhxjcooler 2007-02-13
  • 打赏
  • 举报
回复
知道怎么改了,但我想知道为什么我那样不行
zhxjcooler 2007-02-13
  • 打赏
  • 举报
回复
就是你构造ddd的时候panel内还没有值,而你setCtrlPanel的时候只是负值,并没有添加东西

不大明白,能说得详细点吗
shan1119 2007-02-13
  • 打赏
  • 举报
回复
就是你构造ddd的时候panel内还没有值,而你setCtrlPanel的时候只是负值,并没有添加东西
shan1119 2007-02-13
  • 打赏
  • 举报
回复
class ddd1 extends JPanel {

private JPanel ctrlPanel = new JPanel();

public ddd1() {
this.add(ctrlPanel, BorderLayout.SOUTH);
}

public void setCtrlPanel(JPanel ctrlPanel) {
this.add(ctrlPanel);
}

public JPanel getCtrlPanel() {
return ctrlPanel;
}

}
leasa 2007-02-13
  • 打赏
  • 举报
回复
还想说一句,其实你并没有改变this.ctrlPanel 的引用.
代码写的太乱了,想清楚自己要做什么再动手实现.
还有,注意编码规范会比较好一些.
leasa 2007-02-13
  • 打赏
  • 举报
回复
试试吧,调整好了.
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;

/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class ddd extends JPanel {

private JPanel ctrlPanel = new JPanel();

public ddd() {
this.add(ctrlPanel, BorderLayout.SOUTH);
}

public void setCtrlPanel(JPanel ctrlPanel) {
this.ctrlPanel = ctrlPanel;
}

public JPanel getCtrlPanel() {
return ctrlPanel;
}

}


class CommonPanel extends JPanel {
private JButton addBtn = new JButton("添加");
private JButton updateBtn = new JButton("修改");
private JButton delBtn = new JButton("删除");
private JButton cancelBtn = new JButton("取消");

public CommonPanel() {
add(addBtn);
add(updateBtn);
add(delBtn);
add(cancelBtn);
}
}


class ee extends ddd {
private JButton addBtn = new JButton("添加");
private JButton updateBtn = new JButton("修改");
private JButton delBtn = new JButton("删除");
private JButton cancelBtn = new JButton("取消");

ee() {
JPanel p3 = this.getCtrlPanel();
p3.add(addBtn);
p3.add(updateBtn);
p3.add(delBtn);
p3.add(cancelBtn);

this.setCtrlPanel(p3);

}

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
JFrame ff = new JFrame();

ff.setSize(500, 400);

ee e1 = new ee();
ff.getContentPane().add(e1);
ff.setVisible(true);
}

}

interpb 2007-02-13
  • 打赏
  • 举报
回复
class ddd1 extends JPanel {

private JPanel ctrlPanel = new JPanel();

public ddd1() {
this.add(ctrlPanel, BorderLayout.SOUTH);
}

public void setCtrlPanel(JPanel ctrlPanel) {
this.remove(this.ctrlPanel);
this.add(ctrlPanel);
this.ctrlPanel = ctrlPanel;
}

public JPanel getCtrlPanel() {
return ctrlPanel;
}

}
这样改就可以了
shan1119 2007-02-13
  • 打赏
  • 举报
回复
ee e1 = new ee();→ee继承bbb→this.add(ctrlPanel,BorderLayout.SOUTH);
这个时候的ctrlPanel内并没用东西→ee构造函数内JPanel p3 = new CommonPanel();
→这个时候,才给ctrlPanel负值,所以要从新加值
也就是说bbb构造内的东西没什么用。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧