我在(java)eclipse里编译没有显示错误,但就是运行不了(图形界面没有),请问这是什么原因???

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Myclass extends JFrame {
JFrame frm,frm2;
public void myclass(){
frm=new JFrame("登录界面");
frm.setSize(200,200);
frm.setLocation(20,20);
JPanel contentPane=new JPanel( );
setContentPane(contentPane);
JPanel secP1=new JPanel ();
JPanel secP2=new JPanel ();
contentPane.add(secP1,BorderLayout.CENTER);
contentPane.add(secP1,BorderLayout.SOUTH);

JTextField jt = new JTextField(10);
secP1.add(jt);
JLabel lab1 = new JLabel("账 号:");
JTextField tf = new JTextField(15);
JLabel lab2 = new JLabel("密 码:");
JPasswordField pwf = new JPasswordField(15);
contentPane.add(lab1);
contentPane.add(tf);
contentPane.add(lab2);
contentPane.add(pwf);
JButton btn = new JButton ("登录");
btn.addActionListener((ActionListener)this);
secP1.add(btn);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);

frm2=new JFrame("计算界面");
frm2.setSize(200,200);
frm2.setLocationRelativeTo(null);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(false);
}
public static void main (String [] args){
new Myclass();
}
public void actionPerformed(ActionEvent args0){
if (args0.getActionCommand().equals("登录"));
frm. setVisible(false);
frm. setVisible(true);
}
}

你要想实现的是点击登陆后,出现计算界面吧?你有几个地方写的不对,public void myclass()要改成public Myclass或是要main方法中new Myclass().myclass().要不然你在main方法中只初始一个实例当然什么也不执行了。另外((ActionListener)this)这样写不对,ActionListener是一个接口,无论是Myclass还是JFrame都没有实现这个接口,所以你不能这样强制转型。另外注册事件一般是用匿名方法,向下面那样。另外你隐藏的JFrame也不对,可能是写错了吧。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Myclass extends JFrame {
JFrame frm,frm2;
public Myclass(){
frm=new JFrame("登录界面");
frm.setSize(200,200);
frm.setLocation(20,20);
JPanel contentPane=new JPanel( );
setContentPane(contentPane);
JPanel secP1=new JPanel ();
JPanel secP2=new JPanel ();
contentPane.add(secP1,BorderLayout.CENTER);
contentPane.add(secP1,BorderLayout.SOUTH);

JTextField jt = new JTextField(10);
secP1.add(jt);
JLabel lab1 = new JLabel("账 号:");
JTextField tf = new JTextField(15);
JLabel lab2 = new JLabel("密 码:");
JPasswordField pwf = new JPasswordField(15);
contentPane.add(lab1);
contentPane.add(tf);
contentPane.add(lab2);
contentPane.add(pwf);
JButton btn = new JButton ("登录");
btn.addActionListener(
new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 可在if里对用户名和密码进行验证 if (e.getActionCommand().equals("登录"));
frm. setVisible(false);
frm2. setVisible(true);
}
});
secP1.add(btn);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);

frm2=new JFrame("计算界面");
frm2.setSize(200,200);
frm2.setLocationRelativeTo(null);
frm.setContentPane(contentPane);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm2.setVisible(false);
}
public static void main (String [] args){
new Myclass();
}
/*
public void actionPerformed(ActionEvent args0){
if (args0.getActionCommand().equals("登录"));
frm. setVisible(false);
frm. setVisible(true);
}
*/
}追问

怎样把登录按钮放到最下面,谢了

追答

最简单的方法是注掉
contentPane.add(secP1,BorderLayout.CENTER);
contentPane.add(secP1,BorderLayout.SOUTH);
这两行。
在secP1.add(btn);
这行下加上
contentPane.add(secP1);
这是swing的一个方面,你可以上网找下,叫布局管理器

追问

在计算界面中怎样添加计算程序(可计算的),求代码

追答

计算这块没有百八十行是完不成的,首先0-9这十个button你要注册事件,+-*/=你也要注册事件,还有显示的文本框等。所以你还是上网找一下,搜swing计算器应该会有很多源码的

追问

为什么跳出来的图形界面刚开始没内容的,放大界面才有内容啊,为什么啊????还有怎样在计算页面(第二个页面)添加按妞等内容(就是上面这个程序该如何修改),求代码,谢了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-20
main函数改一下
public static void main (String [] args){
Myclass m=new Myclass();
m.setVisible(true);
}
第2个回答  2011-04-22
新手任务。。
第3个回答  2011-04-22
新手任务
相似回答