registerpane.java

来自「一个简单的程序稳操胜券用拖把有稳操胜券」· Java 代码 · 共 572 行 · 第 1/2 页

JAVA
572
字号
			regMessage.setType(10);
			regMessage.setObj(user);
			oos.writeObject(regMessage);
			oos.flush();
			ois = new ObjectInputStream(new BufferedInputStream(client.getInputStream()));
			
			//ois = new ObjectInputStream(client.getInputStream());
			//oos = new ObjectOutputStream(client.getOutputStream());
		}
		public void run() {
			
			try {
				while(ois!=null){
					Object obj = ois.readObject();
					if(obj instanceof JQMessage){
						JQMessage message = (JQMessage)obj;
						int type = message.getType();
						switch (type) {
						case 11:
							RegUser xuser = (RegUser)message.getObj();
							new RegSuccess(xuser,RegisterPane.this,true);
							//btnOk.setEnabled(true);
							closeClient();
							break;
						case 12:
							JOptionPane.showMessageDialog(null, "注册失败!请重新注册!");
							btnOk.setEnabled(true);
							closeClient();
							break;
						case 90:
							JOptionPane.showMessageDialog(null, message.getObj().toString());
							closeClient();
							System.exit(0);
							break;
						}
						break;
					}
				}
			} catch (IOException e) {
				JOptionPane.showMessageDialog(null, "发生错误,原因:"+e.getMessage());
				closeClient();
			} catch (ClassNotFoundException e) {
				JOptionPane.showMessageDialog(null, "发生错误,原因:"+e.getMessage());
				closeClient();
			}	
		}
		
		public void closeClient(){
			try {
				if(oos!=null)oos.close();oos = null;
				if(ois!=null)ois.close();ois = null;
				if(client!=null)client.close();client=null;
			} catch (IOException e) {
				System.out.println("错误:"+e.getMessage());
			}
		}
	}
	
	/**
	 * 注册成功窗口
	 * 2008-9-27
	 * @author		达内科技[Tarena Training Group]
	 * @version	1.0
	 * @since		JDK1.6(建议) 
	 */
	private class RegSuccess extends JDialog implements ActionListener{
		
		private JTextArea txtInfo = new JTextArea();
		private JButton btnLogin = new JButton("直接登录");
		private JButton btnReturn = new JButton("返回登陆界面");
		private RegUser user;
		
		public RegSuccess(RegUser user,Frame owner, boolean modal) {
			super(owner,modal);
			this.user = user;
			setSize(250,190);
			setResizable(false);
			Toolkit tk=Toolkit.getDefaultToolkit();
			setLocation((tk.getScreenSize().width-getSize().width)/2,(tk.getScreenSize().height-getSize().height)/2);
			setTitle("注册信息");
			
			txtInfo.setText("恭喜!"+user.getRealname()+",注册成功!\n"+
					"用户昵称:"+user.getNickname()+"\n"+
					"登陆号码:"+user.getJqnum()+"\n"+
					"登陆密码:"+user.getPassword()+"\n"+
					"请妥善保管您的号码和密码!");
			txtInfo.setEditable(false);
			txtInfo.setOpaque(true);
			txtInfo.setBackground(this.getBackground());
			txtInfo.setPreferredSize(new Dimension(200,100));
			txtInfo.setBorder(new TitledBorder(new LineBorder(Color.DARK_GRAY)," 注册信息 "));
			setLayout(new FlowLayout(FlowLayout.CENTER,10,10));
			
			btnLogin.addActionListener(this);
			btnReturn.addActionListener(this);
			add(txtInfo);
			add(btnLogin);
			add(btnReturn);
			
			setVisible(true);
		}
		public void actionPerformed(ActionEvent e) {
			if(e.getSource()==btnLogin){
				dispose();
				RegisterPane.this.dispose();
				new MainPane(txtServerIP.getText(),Integer.parseInt(txtServerPort.getText()),user.getJqnum(),user.getPassword(),UserState.ONLINESTATE.getState());
			}
			if(e.getSource()==btnReturn){
				dispose();
				RegisterPane.this.dispose();
				new LoginPane();
			}
				
		}
	}
	
	/**
	 * 选择头像窗口
	 * 2008-9-27
	 * @author		达内科技[Tarena Training Group]
	 * @version	1.0
	 * @since		JDK1.6(建议) 
	 */
	private class ChooseProtrait extends JDialog implements ActionListener{
		private JButton[] btnPortrait = new JButton[158];
		private Portrait[] portraits = new Portrait[158];
		
		private JLabel lblBoys = new JLabel("男士头像(共30个)");
		private JLabel lblGirls = new JLabel("女士头像(共29个)");
		private JLabel lblAnimals = new JLabel("动物头像(共36个)");
		private JLabel lblOthers = new JLabel("其他头像(共63个)");
		
		private JLabel lblViewInfo = new JLabel("预览:");
		private JLabel lblPhotoView = new JLabel();
		
		private JButton btnP_Ok = new JButton("确定");
		private JButton btnP_Cancle = new JButton("取消");
		
		public ChooseProtrait() {
			setTitle("选择头像");
			setSize(500,440);
			setResizable(false);
			Toolkit tk=Toolkit.getDefaultToolkit();
			setLocation((tk.getScreenSize().width-getSize().width)/2,(tk.getScreenSize().height-getSize().height)/2);
			
			btnP_Ok.setSize(80,20);
			btnP_Ok.setLocation(300, 375);
			btnP_Ok.addActionListener(this);
			btnP_Cancle.setSize(80,20);
			btnP_Cancle.setLocation(400, 375);
			btnP_Cancle.addActionListener(this);
			
			//初始化按钮,并将头像显示的按钮上
			for(int i=0;i<btnPortrait.length;i++){
				btnPortrait[i] = new JButton();
				btnPortrait[i].setMargin(new Insets(0,0,0,0));
				btnPortrait[i].setPreferredSize(new Dimension(50,50));
				btnPortrait[i].addActionListener(this);
				btnPortrait[i].setOpaque(true);
				btnPortrait[i].setBackground(Color.WHITE);
				
			}
			//初始化预览头像
			lblPhotoView.setOpaque(true);
			lblPhotoView.setBackground(Color.WHITE);
			lblPhotoView.setHorizontalAlignment(SwingConstants.CENTER);
			lblPhotoView.setPreferredSize(new Dimension(50,50));
			lblPhotoView.setBorder(new LineBorder(Color.DARK_GRAY));
			lblPhotoView.setIcon(lblPhoto.getIcon());
			lblPhotoView.setSize(50,50);
			lblPhotoView.setLocation(420, 40);
			lblViewInfo.setSize(60,20);
			lblViewInfo.setLocation(425, 10);
			
			initJLabel(lblBoys);
			initJLabel(lblGirls);
			initJLabel(lblAnimals);
			initJLabel(lblOthers);
			
			JPanel paneBoys = getPane(0, 30);
			JPanel paneGirls = getPane(30, 60);
			JPanel paneAnimals = getPane(60, 96);
			JPanel paneOthers = getPane(96, 158);
			
			JPanel panePortrait = new JPanel();
			panePortrait.setPreferredSize(new Dimension(380,1500));
			panePortrait.setOpaque(true);
			panePortrait.setBackground(Color.WHITE);
			panePortrait.add(lblBoys);
			panePortrait.add(paneBoys);
			panePortrait.add(lblGirls);
			panePortrait.add(paneGirls);
			panePortrait.add(lblAnimals);
			panePortrait.add(paneAnimals);
			panePortrait.add(lblOthers);
			panePortrait.add(paneOthers);
			
			JScrollPane sp = new JScrollPane(panePortrait);
			sp.setSize(400,350);
			sp.setLocation(10,5);
			setLayout(null);
			
			JPanel paneAll = new JPanel();
			paneAll.setSize(480,365);
			paneAll.setLocation(5, 0);
			paneAll.setOpaque(true);
			paneAll.setBackground(Color.WHITE);
			paneAll.setBorder(new LineBorder(Color.BLACK));
			paneAll.setLayout(null);
			paneAll.add(sp);
			paneAll.add(lblViewInfo);
			paneAll.add(lblPhotoView);
			
			add(paneAll);
			add(btnP_Ok);
			add(btnP_Cancle);
			
			//启动多线程加载头像到按钮上,加快对话框的显示时间
			new Thread(){
				public void run() {
					for(int i=0;i<btnPortrait.length;i++){
						portraits[i] = new Portrait(i+1);
						btnPortrait[i].setIcon(portraits[i]);
					}
				}
			}.start();
			
			
			setDefaultCloseOperation(DISPOSE_ON_CLOSE);
			setVisible(true);
		}
		
		/**
		 * 初始化一些面板,仅仅为简便方法。
		 * @param pane
		 */
		private void initJLabel(JLabel pane){
			pane.setOpaque(true);
			pane.setBackground(new Color(226,247,254));
			pane.setPreferredSize(new Dimension(380,25));
			pane.setBorder(new LineBorder(Color.BLACK));
		}
		
		/**
		 * 根据开始和结束获得面板。
		 * @param begin 开始的头像位置。
		 * @param end 结束的头像位置。
		 * @return 添加好头像的面板。
		 */
		private JPanel getPane(int begin,int end){
			JPanel pane = new JPanel();
			pane.setOpaque(true);
			pane.setBackground(Color.WHITE);
			pane.setLayout(new GridLayout(0,7,5,5));
			for(int i = begin;i<end;i++)
				pane.add(btnPortrait[i]);
			
			return pane;
		}
		
		public void actionPerformed(ActionEvent e) {
			//点击确定时更改选择的图像
			if(e.getSource()==btnP_Ok){
				lblPhoto.setIcon(lblPhotoView.getIcon());
				dispose();
				return;
			}
			//点击确定时关闭选择图像的窗口
			if(e.getSource()==btnP_Cancle){
				dispose();
				return;
			}
			//如果是图像的按钮时,显示图想到浏览头像面板上
			int i = -1;
			for(i=0;i<btnPortrait.length;i++){
				if(e.getSource()==btnPortrait[i])
					break;
			}
			if(i<btnPortrait.length){
				lblPhotoView.setIcon(portraits[i]);
			}
				
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?