关于登陆框的问题 现在有一登陆框 JFrame , 我输入用户名,点确认后,就会弹出一新的窗口,这个窗口有个JTextField 和 发送按钮,下面是JTextArea 显示信息的。我想问这个新的窗口 是怎么实现的,是一个新的JFrame 还是弹出一个FileDialog 。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.awt.Color; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.JTextField; /** * * @author capuchin * @date 2008-1-6 15:05:02 */ public class Login extends JDialog { private static final long serialVersionUID = 1L; private JLabel l_Id = new JLabel("登陆账户", JLabel.CENTER); private JLabel l_pw = new JLabel("登陆密码", JLabel.CENTER); private JTextField t_Id = new JTextField(10); private JPasswordField t_pw = new JPasswordField(10); private JButton btnLogin; private JButton btnClose; public Login() { super(); setResizable(false); getContentPane().setBackground(new Color(225, 225, 225)); getContentPane().setLayout(null); initialize(); } protected void initialize() { setTitle("系统登录"); l_Id.setBounds(48, 43, 53, 25); t_Id.setBounds(110, 43, 150, 25); l_pw.setBounds(48, 93, 53, 25); t_pw.setBounds(110, 93, 150, 25); getContentPane().add(l_Id); getContentPane().add(l_pw); getContentPane().add(t_Id); getContentPane().add(t_pw); btnLogin = new JButton(); btnLogin.setText("登 录"); btnLogin.setBounds(70, 142, 85, 28); btnLogin.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addBtnLoginActionListener(); } }); getContentPane().add(btnLogin); btnClose = new JButton(); btnClose.setText("关 闭"); btnClose.setBounds(175, 142, 85, 28); btnClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); System.exit(-1); } }); getContentPane().add(btnClose); } private void addBtnLoginActionListener() { String user = t_Id.getText(); String password = new String(t_pw.getPassword()); if (user.equals("")) { JOptionPane.showMessageDialog(this, "帐号不可为空", "Caution", JOptionPane.WARNING_MESSAGE); return; } if (password.equals("")) { JOptionPane.showMessageDialog(this, "密码不可为空", "Caution", JOptionPane.WARNING_MESSAGE); return; } String sql = "select * FROM login WHERE id = '" + user + "' and pw = '" + password + "'"; boolean success = false; // TODO:数据校验 success = executeQuery(sql); if (success) { // TODO: 如果数据校验成功 显示主界面 并关闭登录界面 JOptionPane.showMessageDialog(this, "成功登录", "提示", JOptionPane.INFORMATION_MESSAGE); this.dispose(); } else { JOptionPane.showMessageDialog(this, "帐号或密码错误!", "警告", JOptionPane.WARNING_MESSAGE); t_pw.requestFocus(); // 密码框选中 } } public Dimension getPreferredSize() { return new Dimension(320, 170); } public void show() { Toolkit tk = Toolkit.getDefaultToolkit(); Dimension screen = tk.getScreenSize(); Dimension d = getSize(); this.setLocation((screen.width - d.width) / 2, (screen.height - d.height) / 2); // 输入密码后回车相当于点击了登录按钮 getRootPane().setDefaultButton(btnLogin); t_pw.requestFocus(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); setSize(300, 220); super.show(); } public static void main(String[] args) { Login loginFrame = new Login(); loginFrame.setVisible(true); } } 弹出一个消息框很好做,要是弹出一个窗口就有点麻烦了。 谢谢,我想问下 类继承 JDialog 有什么好处 ? import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusEvent;import java.awt.event.FocusListener;import java.util.regex.Matcher;import java.util.regex.Pattern;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;import com.lxj.homework.Imp.User;import com.lxj.homework.Imp.UserImp;import com.lxj.homework.dao.UserDao;public class Login { private JFrame frame; private JLabel userLabel,pswLabel,showLabel; private JTextField userField; private JPasswordField pswField; private JButton ok,cancel; private UserDao dao; public Login(UserDao dao){ this.dao=dao; frame=new JFrame("登录"); userLabel=new JLabel("用户名:"); pswLabel=new JLabel("密码 :"); showLabel=new JLabel("请输入正确的用户名和密码:"); userField=new JTextField(20); pswField=new JPasswordField(20); ok=new JButton("登录"); cancel=new JButton("取消"); } private void init(){ JPanel p1=new JPanel(); p1.setLayout(new FlowLayout()); p1.add(userLabel); p1.add(userField); p1.add(pswLabel); p1.add(pswField); JPanel p2=new JPanel(); p2.setLayout(new FlowLayout()); p2.add(ok); p2.add(cancel); frame.add(showLabel,new BorderLayout().NORTH); frame.add(p1,new BorderLayout().CENTER); frame.add(p2,new BorderLayout().SOUTH); } private void addHandleEvent(){ ok.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { User user=dao.getUser(userField.getText(),pswField.getPassword().toString()); if(user!=null){ new BankManager().showMe();//这个类是一个新的JFrame类,可以这样调用 frame.setDefaultCloseOperation(frame.HIDE_ON_CLOSE); }else{ JOptionPane.showMessageDialog(frame,"帐户或密码有错误!"); } } }); cancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); } public void showMe(){ init(); addHandleEvent(); frame.setVisible(true); frame.setSize(300,150); frame.setLocation(400, 300); frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); } public static void main(String[] args) { UserDao dao=new UserImp(); new Login(dao).showMe(); }}LZ看看这个是弹出一个新的JFrame窗口 你这个包 import com.lxj.homework.Imp.User;import com.lxj.homework.Imp.UserImp;import com.lxj.homework.dao.UserDao;很明显我没有 接口究竟有多大作用~ 按钮上的图片不跟着走 大家帮我看看啊~Tomcat 请问 paint()和paintComponent()有什么区别呢? 一个方法调用的问题 能解决一下从键盘上输入字符读入数组中的Applaction 程序吗? 进来看看,连数据库的小问题 如何做到在结果集中查询?使用JBuilder,结果集使用QueryDataSet类 紧急求助!!! (100分)哪里有solaris平台下的websphere ,visualage for java ,jbuilder企业版下载 jcomboBox 级联问题 怎样让JTextArea拥有内边距
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField; /**
*
* @author capuchin
* @date 2008-1-6 15:05:02
*/
public class Login extends JDialog { private static final long serialVersionUID = 1L; private JLabel l_Id = new JLabel("登陆账户", JLabel.CENTER);
private JLabel l_pw = new JLabel("登陆密码", JLabel.CENTER);
private JTextField t_Id = new JTextField(10);
private JPasswordField t_pw = new JPasswordField(10);
private JButton btnLogin;
private JButton btnClose; public Login() {
super();
setResizable(false);
getContentPane().setBackground(new Color(225, 225, 225));
getContentPane().setLayout(null);
initialize();
} protected void initialize() {
setTitle("系统登录"); l_Id.setBounds(48, 43, 53, 25);
t_Id.setBounds(110, 43, 150, 25);
l_pw.setBounds(48, 93, 53, 25);
t_pw.setBounds(110, 93, 150, 25); getContentPane().add(l_Id);
getContentPane().add(l_pw);
getContentPane().add(t_Id);
getContentPane().add(t_pw); btnLogin = new JButton(); btnLogin.setText("登 录");
btnLogin.setBounds(70, 142, 85, 28);
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addBtnLoginActionListener();
}
}); getContentPane().add(btnLogin); btnClose = new JButton(); btnClose.setText("关 闭");
btnClose.setBounds(175, 142, 85, 28);
btnClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
System.exit(-1);
}
});
getContentPane().add(btnClose);
} private void addBtnLoginActionListener() {
String user = t_Id.getText();
String password = new String(t_pw.getPassword()); if (user.equals("")) {
JOptionPane.showMessageDialog(this, "帐号不可为空", "Caution",
JOptionPane.WARNING_MESSAGE);
return;
} if (password.equals("")) {
JOptionPane.showMessageDialog(this, "密码不可为空", "Caution",
JOptionPane.WARNING_MESSAGE);
return;
} String sql = "select * FROM login WHERE id = '" + user + "' and pw = '"
+ password + "'"; boolean success = false; // TODO:数据校验 success = executeQuery(sql); if (success) {
// TODO: 如果数据校验成功 显示主界面 并关闭登录界面 JOptionPane.showMessageDialog(this, "成功登录", "提示",
JOptionPane.INFORMATION_MESSAGE);
this.dispose();
} else {
JOptionPane.showMessageDialog(this, "帐号或密码错误!", "警告",
JOptionPane.WARNING_MESSAGE);
t_pw.requestFocus(); // 密码框选中
} } public Dimension getPreferredSize() {
return new Dimension(320, 170);
} public void show() {
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension screen = tk.getScreenSize();
Dimension d = getSize();
this.setLocation((screen.width - d.width) / 2,
(screen.height - d.height) / 2); // 输入密码后回车相当于点击了登录按钮
getRootPane().setDefaultButton(btnLogin);
t_pw.requestFocus();
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setSize(300, 220);
super.show();
} public static void main(String[] args) {
Login loginFrame = new Login();
loginFrame.setVisible(true);
}
} 弹出一个消息框很好做,要是弹出一个窗口就有点麻烦了。
我想问下 类继承 JDialog 有什么好处 ?
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;import com.lxj.homework.Imp.User;
import com.lxj.homework.Imp.UserImp;
import com.lxj.homework.dao.UserDao;public class Login {
private JFrame frame;
private JLabel userLabel,pswLabel,showLabel;
private JTextField userField;
private JPasswordField pswField;
private JButton ok,cancel;
private UserDao dao;
public Login(UserDao dao){
this.dao=dao;
frame=new JFrame("登录");
userLabel=new JLabel("用户名:");
pswLabel=new JLabel("密码 :");
showLabel=new JLabel("请输入正确的用户名和密码:");
userField=new JTextField(20);
pswField=new JPasswordField(20);
ok=new JButton("登录");
cancel=new JButton("取消");
}
private void init(){
JPanel p1=new JPanel();
p1.setLayout(new FlowLayout());
p1.add(userLabel);
p1.add(userField);
p1.add(pswLabel);
p1.add(pswField);
JPanel p2=new JPanel();
p2.setLayout(new FlowLayout());
p2.add(ok);
p2.add(cancel);
frame.add(showLabel,new BorderLayout().NORTH);
frame.add(p1,new BorderLayout().CENTER);
frame.add(p2,new BorderLayout().SOUTH);
}
private void addHandleEvent(){
ok.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
User user=dao.getUser(userField.getText(),pswField.getPassword().toString());
if(user!=null){
new BankManager().showMe();//这个类是一个新的JFrame类,可以这样调用
frame.setDefaultCloseOperation(frame.HIDE_ON_CLOSE);
}else{
JOptionPane.showMessageDialog(frame,"帐户或密码有错误!");
}
}
});
cancel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
public void showMe(){
init();
addHandleEvent();
frame.setVisible(true);
frame.setSize(300,150);
frame.setLocation(400, 300);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
UserDao dao=new UserImp();
new Login(dao).showMe(); }}
LZ看看这个是弹出一个新的JFrame窗口
import com.lxj.homework.Imp.User;
import com.lxj.homework.Imp.UserImp;
import com.lxj.homework.dao.UserDao;
很明显我没有