import java.awt.*;
import java.awt.Event.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;public class ChatWindow extends JFrame {

public static void main(String[] args) {
new ChatWindow().launchFrame();
} private void launchFrame() {
setLayout(null);
JPanel main = new JPanel();
main.setLayout(null);

JLabel jl = new JLabel();
jl.setBounds(0,0,330,20);
jl.setText("你正在与XXX聊天");
main.add(jl);

JTextArea ta = new JTextArea(100,150);
ta.setBounds(0,20,330,260);
ta.setText("");

JLabel jl1 = new JLabel("dfsdf");
jl1.setBounds(330,20,140,226);
ImageIcon im = new ImageIcon("./image/girl.gif");
jl1.setIcon(im);
main.add(jl1);

JTextArea ta1 = new JTextArea(50,150);
ta1.setBounds(0,260,330,100);
ta1.setText("");

JButton jclose = new JButton("关闭");
jclose.setBounds(200,365,50,20);
jclose.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.exit(0);
}
});

JButton jsend = new JButton("发送");
jsend.setBounds(280,365,50,20);

main.add(jclose);
main.add(jsend);
main.add(ta);
main.add(ta1);
add(main);

setLocation(280,150);
setSize(470,420);
setVisible(true);

this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}为什么我用javax.swing.*中的控件就不显示任何东西,而我要是改为 java.awt.*中的控件就都显示正常,但是我要使用以J开头的控件,该怎么办?谢谢解答!

解决方案 »

  1.   

    awt和swing的控件不要混用
    可能出现显示问题
      

  2.   

    用swing就全部用swing
    用awt就用awt
      

  3.   

    看看AWT的介绍就应该知道了吧  swing可以说是从AWT继承过来的吧
      

  4.   

    但是就是不显示  这该怎么办呢
    你们还是没说出原因 你把代码运行下就晓得了 
    这到底是什么问题 呢 ?为什么我全改成不带J的就可以运行 改为J的控件根本就不显示 
    这问题真的很闹心 
    哪位解答下 ?我没有混用这些 就算把所有的控件都用swing也一样显示不出来 
    请大家帮下吧!
      

  5.   

    swing有一年没有接触了,就是简单说下,你别着急
    你先把代码优化下,
    实在不行,你只用J的
    先从Jpane开始
    Jframe 这些肯定能出来吧
    ,,一步步找到错误
      

  6.   

    刚才运行了楼主的程序,只要去掉语句 setLayout(null);就行了,至于界面布局还需再细化
      

  7.   

    应该是main组件没有设置大小,因为你没有使用任何Layout.
    加一句 main.setSize(470,420); 就OK了.
      

  8.   


    setLocation(280,150);
    setSize(470,420);
    setVisible(true);
    main组件有设置大小啊。
      

  9.   

        main.setBounds(0,0,200,300);呵呵,你使用了null的layout ,必须自己指定main panel的位置和大小。否则就在0,0的位置,且尺寸为0,当然啥都看不到了
      

  10.   

    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;public class ChatWindow extends JFrame { public static void main(String[] args) {
    new ChatWindow().launchFrame();
    } private void launchFrame() {
    this.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    });
    // setLayout(null);//这行有问题,你干什么要在这里做这个动作啊??不明白
    JPanel main = new JPanel();
    main.setLayout(null); JLabel jl = new JLabel();
    jl.setBounds(0, 0, 330, 20);
    jl.setText("你正在与XXX聊天");
    main.add(jl); JTextArea ta = new JTextArea(100, 150);
    ta.setBounds(0, 20, 330, 260);
    ta.setText(""); JLabel jl1 = new JLabel("dfsdf");
    jl1.setBounds(330, 20, 140, 226);
    ImageIcon im = new ImageIcon("./image/girl.gif");
    jl1.setIcon(im);
    main.add(jl1); JTextArea ta1 = new JTextArea(50, 150);
    ta1.setBounds(0, 260, 330, 100);
    ta1.setText(""); JButton jclose = new JButton("关闭");
    jclose.setBounds(200, 365, 50, 20);
    jclose.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
    System.exit(0);
    }
    }); JButton jsend = new JButton("发送");
    jsend.setBounds(280, 365, 50, 20); main.add(jclose);
    main.add(jsend);
    main.add(ta);
    main.add(ta1);
    add(main); setLocation(280, 150);
    setSize(470, 420);
    setVisible(true); }
    }
      

  11.   

    呵呵,确实是jpanel没有设置大小 谢谢大家了!