概述
Popup 和 PopupFactory 是 Java Swing 库的一部分。当我们想要向用户显示一个组件,并且该组件需要位于特定容器层次结构中所有其他组件的顶部时,通常就会使用到 Popups。PopupFactory 则是用于创建 Popups 的类。Popups 的生命周期通常很短,并且一般属于轻量级组件,包含的子组件也较为有限。
类的构造函数如下:
- PopupFactory():创建一个 PopupFactory 的实例对象。
常用方法:
说明
—
创建一个 Popup。该 Popup 包含组件 c,并将其显示在所有者组件 o 的 坐标处。
隐藏并销毁该 Popup。
使 Popup 可见。下面的程序将向我们展示 Popup 的具体用法:
—
1. Java 程序:创建一个 Popup 并将其显示在父窗体上
在这个例子中,我们将通过创建一个 PopupFactory 并使用 INLINECODEd7705d5d 函数来获取一个 Popup 对象 p。我们将把这个 Popup 添加到一个标题为“pop”的 JFrame 窗体 f 中。接下来,我们会创建一个标签并将其添加到容器面板 p2 中,同时使用 INLINECODE819697c8 函数设置面板 p2 的背景色。随后,我们将容器面板 p2 添加到 Popup 中。
我们还会创建一个标题为“click”的按钮,并为其添加一个动作监听器;当按钮被按下时,程序将显示这个 Popup。最后,我们将按钮 b 添加到一个面板中,再将该面板添加到窗体中。窗体的大小通过 INLINECODE91f67c2e 设置为 400×400。最后,使用 INLINECODE583ae4c4 函数显示窗体。
// Java Program to create a popup and display
// it on a parent frame
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class pop extends JFrame implements ActionListener {
// popup
Popup p;
// constructor
pop()
{
// create a frame
JFrame f = new JFrame("pop");
// create a label
JLabel l = new JLabel("This is a popup");
f.setSize(400, 400);
PopupFactory pf = new PopupFactory();
// create a panel
JPanel p2 = new JPanel();
// set Background of panel
p2.setBackground(Color.red);
p2.add(l);
// create a popup
p = pf.getPopup(f, p2, 180, 100);
// create a button
JButton b = new JButton("click");
// add action listener
b.addActionListener(this);
// create a panel
JPanel p1 = new JPanel();
p1.add(b);
f.add(p1);
f.show();
}
// if the button is pressed
public void actionPerformed(ActionEvent e)
{
p.show();
}
// main class
public static void main(String args[])
{
pop p = new pop();
}
}
输出:
—
2. Java 程序:创建一个 Popup(添加面板),显示在父窗体上,并为 Popup 添加动作监听器
在这个例子中,我们同样通过创建 PopupFactory 并使用 getPopup() 函数来获取 Popup 对象 p。我们会将外观设置为系统外观。
我们将 Popup 添加到标题为“pop”的 JFrame 窗体 f 中。我们会创建一个标签,以及一个标题为“OK”的按钮 b19(我们将为标签设置特定的字体对象),并将它们添加到容器面板 p2 中,同时使用 setBackground() 函数设置面板 p2 的背景色。接着,我们将容器面板 p2 添加到 Popup 中。
我们还会创建一个标题为“click”的按钮,并为其添加一个动作监听器;当按钮被按下时,程序将显示这个 Popup。按钮 b 被添加到一个面板中,然后该面板被添加到窗体中。窗体的大小通过 INLINECODEf35daeb0 设置为 400×400。最后,使用 INLINECODE9eb1ce16 函数显示窗体。
// Java Program to create a popup (add a panel) and
// display it on a parent frame and also
// add action listener to the popup
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class pop1 extends JFrame implements ActionListener {
// popup
Popup po;
// frame
JFrame f;
// panel
JPanel p;
// popupfactory
PopupFactory pf;
// constructor
pop1()
{
// create a frame
f = new JFrame("pop");
f.setSize(400, 400);
pf = new PopupFactory();
// create a label
JLabel l = new JLabel("This is a popup menu");
// create a new button
JButton b19 = new JButton("OK");
// add action listener
b19.addActionListener(this);
try {
// set windows look and feel
UIManager.setLookAndFeel(UIManager.
getSystemLookAndFeelClassName());
}
catch (Exception e) {
}
// create a panel
p = new JPanel();
p.setBackground(Color.blue);
// create a font
Font fo = new Font("BOLD", 1, 14);
l.setFont(fo);
// add contents to panel
p.add(l);
p.add(b19);
// create a popup
po = pf.getPopup(f, p, 200, 100);
// create a button
JButton b = new JButton("click");
// add action listener
b.addActionListener(this);
// create a panel
JPanel p1 = new JPanel();
p1.add(b);
f.add(p1);
f.show();
}
// if the button is pressed
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == b) {
po.show();
}
else {
po.hide();
}
}
// main class
public static void main(String args[])
{
pop1 p = new pop1();
}
}
输出:
注意:上述程序可能无法在在线编译器中运行,请使用离线 IDE 进行运行。