62,629
社区成员
发帖
与我相关
我的任务
分享import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Project2 extends JFrame {
wdmb4 mb=null;
public Project2(){
mb=new wdmb4();
mb.setBackground(Color.yellow);//这样的话这句代码可以执行
this.add(mb);
this.setTitle("");
this.setSize(600,600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args){
Project2 pro=new Project2();
}
}
class wdmb4 extends JPanel{
//public void paint(Graphics g){
//super.paint(g);
//System.out.println("print方法被运行");
//}
}import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Project2 extends JFrame {
wdmb4 mb=null;
public Project2(){
mb=new wdmb4();
mb.setBackground(Color.yellow);//使用super语句,这样的话这句代码也可以执行
this.add(mb);
this.setTitle("");
this.setSize(600,600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args){
Project2 pro=new Project2();
}
}
class wdmb4 extends JPanel{
public void paint(Graphics g){
super.paint(g);
System.out.println("print方法被运行");
}
}import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Project2 extends JFrame {
wdmb4 mb=null;
public Project2(){
mb=new wdmb4();
mb.setBackground(Color.yellow);//这样的话这句代码,就不执行
this.add(mb);
this.setTitle("");
this.setSize(600,600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args){
Project2 pro=new Project2();
}
}
class wdmb4 extends JPanel{
public void paint(Graphics g){
//super.paint(g);
System.out.println("print方法被运行");
}
}
指教不敢,楼下说得也很明白,就是说当一个方法被覆写了之后,它就是一个全新的方法,如果想执行父类的同名方法,就要去特意调用父类的那个方法;当然,如果这个方法没被覆写,那子类的该方法就和父类的该方法的内容相同。
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
子类 子类对象=new 子类();
子类对象.请说话();
}
}
class 父类
{
public void 说话(){
System.out.println("父类说话,你好");
}
public void 请说话(){
说话();
}
}
class 子类 extends 父类
{
public void 说话(){
//不想说,让父类说
//super.说话();
//拦截了,不让说,或者说自己的话
System.out.println("子类说自己的话....");
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
子类 子类对象=new 子类();
子类对象.请说话();
}
}
class 父类
{
public void 说话(){
System.out.println("父类说话,你好");
}
public void 请说话(){
说话();
}
}
class 子类 extends 父类
{
public void 说话(){
//不想说,让父类说
super.说话();
}
}
层主不才,感谢邀请
从控制台的输出看paint()方法被调用了,那么LZ的这几个程序正说明了setBackground()方法调用了paint()方法并通过paint()方法实现JPanel背景颜色的绘制;而LZ在wdmb4类重写了paint()方法,setBackground()又调用的是wdmb4中的paint()方法,所以背景颜色不变,这里的paint()方法的作用只是输出一句话。要绘制背景颜色,就要调用父类的paint()方法,即
super.paint(g);