gpt4 book ai didi

Java 保持框架聚焦

转载 作者:搜寻专家 更新时间:2023-11-01 01:37:05 26 4
gpt4 key购买 nike

你能帮我解决这个问题吗?我有一个带有一些文本字段、复选框和按钮的 JDialog。我希望当框架不再聚焦时消失。所以我向 JDialog 添加了一个焦点监听器,当焦点丢失时,我调用 dialog.setVisible(false);。问题是,如果我单击复选框、文本字段或按钮,框架就会失去焦点并消失。在用户点击它的区域之外之前,我怎样才能让它保持专注?

编辑:我指的“框架”是一个 JDialog。我既不使用 Frame 也不使用 JFrame。所有组件都放在 JDialog 上。我希望它在未聚焦时隐藏,但保持聚焦直到用户在其区域外单击。

最佳答案

似乎您添加了错误的监听器,您应该添加的是 addWindowFocusListener(...) ,看看这个小示例程序,这是你想要发生的事情吗:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DialogFocus
{
private JFrame frame;
private MyDialog myDialog;

public DialogFocus()
{
}

private void createAndDisplayGUI()
{
frame = new JFrame("JFRAME");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationByPlatform(true);

myDialog = new MyDialog(frame, "My Dialog", false);

JButton showButton = new JButton("SHOW DIALOG");
showButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
if (!(myDialog.isShowing()))
myDialog.setVisible(true);
}
});

frame.add(showButton, BorderLayout.PAGE_END);

frame.setSize(300, 300);
frame.setVisible(true);
}

public static void main(String\u005B\u005D args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new DialogFocus().createAndDisplayGUI();
}
});
}
}

class MyDialog extends JDialog
{
private WindowFocusListener windowFocusListener;

public MyDialog(JFrame frame, String title, boolean isModal)
{
setTitle(title);
setModal(isModal);

JPanel contentPane = new JPanel();

JTextField tfield = new JTextField(10);
JComboBox cbox = new JComboBox();
cbox.addItem("One");
cbox.addItem("Two");
cbox.addItem("Three");

contentPane.add(tfield);
contentPane.add(cbox);

windowFocusListener = new WindowFocusListener()
{
public void windowGainedFocus(WindowEvent we)
{
}

public void windowLostFocus(WindowEvent we)
{
setVisible(false);
}
};

addWindowFocusListener(windowFocusListener);

add(contentPane);
pack();
}
}

关于Java 保持框架聚焦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9734052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com