Java窗体问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 08:01:33
package com.wsy;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MyJDialog extends JDialog{
public MyJDialog(){
super(new MyFrame(),"第一个JDialog窗体",true);
Container container=getContentPane();
container.add(new JLabel("这是一个对话框"));
setSize(100,100);
}
public static void main(String args[]){
new MyJDialog();
}
}
class MyFrame extends JFrame{
public MyFrame(){

Container container=getContentPane();
container.setLayout(null);
JLabel jl=new JLabel("这是一个JFrame窗体");
jl.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jl);
JButton bl=new JButton("弹出对话框");
bl.setBounds(10, 10, 100, 21);
bl.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new MyJDialog().setVisible(true);

}

首先,第一个问题:为什么没有出现“这是一个JFrame窗体”几个字?
这几个字是通过JLabel j1显示出来的,而j1却没有设置具体的位置,因为你程序中没用到任何布局管理器,使用的是绝对布局,所以必须设置j1的具体位置及大小 ,如 jl.setBounds(10, 50, 100, 20); 这样便能得到正确的显示结果。

第二个问题,则是你程序本身就是这样写的,当然会再次出现一个父窗体了。仔细看看你程序的结构:
bl.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new MyJDialog().setVisible(true);

}
当你按下button1的时候,新建了一个MyJDialog()对象,跟主函数
public static void main(String args[]){
new MyJDialog();
}
}
中是一模一样,所以你按下按钮 跟刚开始运行程序时的效果就一样了,照样会出现之前的窗体了!