C++ Builder中如何让窗体一直显示最前,焦点不失去,就是点不了别的窗体,切换不了窗体,总处在被激活状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Builder中如何让窗体一直显示最前,焦点不失去,就是点不了别的窗体,切换不了窗体,总处在被激活状态相关的知识,希望对你有一定的参考价值。

当窗体被激活后 除了点本身窗体的关闭按钮 才能将窗体关闭,也就是说程序相当于断点 只有点击窗体上按钮 程序获得指令才继续往下走
尴尬 两个解答好像不能满足。。还有没有高手帮忙了

再加一个隐藏的控件。当焦点离开时让隐藏控件的到焦点,隐藏控件的到焦点时让焦点再回去,就OK.追问

如何判断焦点离开,如何获得呢

追答

是不是有什么killfocus和setfocus之类东西?我没用过C++ Builder!

参考技术A 应该有个失去焦点的事件。。。在里面重置焦点试试呢追问

如何重置焦点

追答

setfoucs()?(我记不大清楚了可能拼写错误)。。应该可以在失去焦点的时间里面,使用SETFOUCS函数重置焦点。。

参考技术B 启动这个Form的时候用
Form2->ShowModal();

java中怎样让一个JFrame窗体始终在最前端显示?

最好能给例子,谢谢!

Window类中有一个方法是setAlwaysOnTop.这个方法就是让窗口总是保持在最前端的!而JFrame又是继承Window类了,因此也可以用这个方法!
可以这样调用:
JFrame frame=new JFrame();
frame.setAlwaysOnTop(true);
参考技术A import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.net.*;
import java.awt.color.*;
import java.util.Vector;
public class Login extends JFrame
implements ActionListener

int port=3000;
static Vector v=new Vector();
private JLabel qqid;
private JLabel qqpwd;
private JTextField use;
private JPasswordField pwd;
private JButton login;
private JButton reg;
private JButton canel;
private JLabel imageLabel;
private Icon image;
JPanel pane;
public Login(String str)
super(str);
int screenWidth = (int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = (int)java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;
image=new ImageIcon("picture\\科比.png");
imageLabel=new JLabel(image);
imageLabel.setBounds(0,0,230,75);
this.add(imageLabel);
qqid=new JLabel("QQ号码:");
qqpwd=new JLabel("QQ密码:");
use=new JTextField();
pwd=new JPasswordField('*');
login=new JButton("登录");
reg=new JButton("注册");
canel=new JButton(" 取消");
pane=new JPanel();
pane.setLayout(null);
pane.add(qqid);
pane.add(use);
pane.add(qqpwd);
pane.add(pwd);
pane.add(canel);
pane.add(login);
pane.add(reg);
qqid.setBounds(15,80,150,20);
use.setBounds(65,80,150,20);
qqpwd.setBounds(15,115,150,20);
pwd.setBounds(65,115,150,20);
login.setBounds(10,160,60,20);
canel.setBounds(80,160,65,20);
reg.setBounds(160,160,60,20);
this.getContentPane().add(pane).setBackground(Color.white);
this.getContentPane().add(pane);
login.addActionListener(this);
reg.addActionListener(this);
canel.addActionListener(this);
this.setResizable(false);
this.setSize(245,240);
this.setLocation((screenWidth-245)/2, (screenHeight-240)/2);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setVisible(true);

public void actionPerformed(ActionEvent e)
JButton jb=(JButton)e.getSource();
if(jb==login)
Talk talk=new Talk();
DatagramPacket dp=null;
try
talk.sendMSG("登录"+":"+use.getText().trim()+":"+pwd.getText().trim()+":"+port,"127.0.0.1",3001);
dp=talk.getMsg(port);

catch(Exception ex)

String re=new String(dp.getData(),0,dp.getData().length);
if(re.trim().equals("success"))

this.setVisible(false);
new Chat(use.getText().trim(),"127.0.0.1","port");


else
JOptionPane.showMessageDialog(pane,"登录失败 请重新登录","错误",JOptionPane.INFORMATION_MESSAGE);
else if(jb==canel)
this.setVisible(false);

else if(jb==reg)
new Reg();


public static void main(String args[])
new Login("J_QQ用户登录界面");
参考技术B Jframe.setAlwaysOnTop(boolean b)可以设置是否前端显示。本回答被提问者和网友采纳

以上是关于C++ Builder中如何让窗体一直显示最前,焦点不失去,就是点不了别的窗体,切换不了窗体,总处在被激活状态的主要内容,如果未能解决你的问题,请参考以下文章

C++ Builder2010窗体生命周期中的五种事件

wpf 中怎么设置一个窗体总在最前显示,非模式对话框怎么只显示一个。

c#,如何弹出一个显示在最前面但没有焦点的窗口?谢谢!

android 中如何让控件一直在窗体底部

C#如何让控件一直在窗体中间显示

如何让窗口半透明,总在最前,但不接收输入?