📜  Java摇摆 |带有示例的 JWindow

📅  最后修改于: 2022-05-13 01:55:19.404000             🧑  作者: Mango

Java摇摆 |带有示例的 JWindow


JWindow 是Java Swing 的一部分,它可以出现在用户桌面的任何部分。它与 JFrame 的不同之处在于 JWindow 没有 JFrame 具有的标题栏或窗口管理按钮,如最小化、最大化和关闭。 JWindow 可以包含几个组件,例如按钮和标签。
类的构造函数是:

  1. JWindow() : 创建一个没有任何指定所有者的空窗口
  2. JWindow(Frame o) :创建一个空的Window,指定的frame作为它的所有者
  3. JWindow(Frame o) : 创建一个空的窗口,指定的框架为它的所有者
  4. JWindow(Window o) : 创建一个空的 Window 指定的窗口作为它的所有者
  5. JWindow(Window o, GraphicsConfiguration g) :创建一个空窗口,指定窗口为所有者,指定图形配置。
  6. JWindow(GraphicsConfiguration g) :使用指定的图形配置 g 创建一个空窗口。

常用方法

  1. setLayout(LayoutManager m) : 将 Window 的布局设置为指定的布局管理器
  2. setContentPane(Container c) : 设置窗口的 ContentPane 属性
  3. getContentPane() :获取作为此窗口的 ContentPane 的容器
  4. add(Component c) : 将组件添加到窗口
  5. isVisible(boolean b) : 设置窗口的可见性,如果布尔值为真则可见,否则不可见
  6. update(Graphics g) : 调用paint(g)函数
  7. remove(Component c) : 移除组件 c
  8. getGraphics() :返回组件的图形上下文。
  9. getLayeredPane() :返回窗口的分层窗格
  10. setContentPane(Container c) :设置窗口的内容窗格
  11. setLayeredPane(JLayeredPane l) :设置窗口的分层窗格
  12. setRootPane(JRootPane r) : 设置窗口的 rootPane
  13. setTransferHandler(TransferHandler n) :设置 transferHandler 属性,这是一种支持将数据传输到此组件的机制。
  14. setRootPaneCheckingEnabled(boolean enabled) :设置对 add 和 setLayout 的调用是否转发到 contentPane。
  15. setRootPane(JRootPane root) :设置窗口的 rootPane 属性。
  16. setGlassPane(Component glass) :设置窗口的 glassPane 属性。
  17. repaint(long time, int x, int y, int width, int height) : 在 time 毫秒内重绘该组件的指定矩形。
  18. remove(Component c) :从窗口中删除指定的组件。
  19. isRootPaneCheckingEnabled() :返回对 add 和 setLayout 的调用是否转发到 contentPane 。
  20. getTransferHandler() :返回 transferHandler 属性。
  21. getRootPane() :返回此窗口的 rootPane 对象。
  22. getGlassPane() :返回此窗口的 glassPane 对象。
  23. createRootPane() :由构造方法调用以创建默认的 rootPane。
  24. addImpl(Component co, Object c, int i) :将指定的子组件添加到窗口中。

以下程序将说明 JWindow 的使用

1.程序创建一个简单的JWindow

// java Program to create a simple JWindow
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
  
  
class solveit extends JFrame implements ActionListener {
  
    // frame
    static JFrame f;
  
    // main class
    public static void main(String[] args)
    {
        // create a new frame
        f = new JFrame("frame");
  
        // create a object
        solveit s = new solveit();
  
        // create a panel
        JPanel p = new JPanel();
  
        JButton b = new JButton("click");
  
        // add actionlistener to button
        b.addActionListener(s);
  
        // add button to panel
        p.add(b);
  
        f.add(p);
  
        // set the size of frame
        f.setSize(400, 400);
  
        f.show();
    }
  
    // if button is pressed
    public void actionPerformed(ActionEvent e)
    {
        String s = e.getActionCommand();
        if (s.equals("click")) {
            // create a window
            JWindow w = new JWindow(f);
  
            // set panel
            JPanel p = new JPanel();
  
            // create a label
            JLabel l = new JLabel("this is a window");
  
            // set border
            p.setBorder(BorderFactory.createLineBorder(Color.black));
  
            p.add(l);
            w.add(p);
  
            // set background
            p.setBackground(Color.red);
  
            // setsize of window
            w.setSize(200, 100);
  
            // set visibility of window
            w.setVisible(true);
  
            // set location of window
            w.setLocation(100, 100);
        }
    }
}

输出 :

1.程序创建多个JWindow。(其中一个窗口是另一个窗口的所有者)

// java program to create a multiple  JWindow .( where one window is the owner of the other )<
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
class solveit extends JFrame implements ActionListener {
  
    // frame
    static JFrame f;
  
    // windows
    JWindow w, w1;
  
    // object of class
    static solveit s;
  
    // main class
    public static void main(String[] args)
    {
        // create a new frame
        f = new JFrame("frame");
  
        // create a object
        s = new solveit();
  
        // create a panel
        JPanel p = new JPanel();
  
        JButton b = new JButton("click");
  
        // add actionlistener to button
        b.addActionListener(s);
  
        // add button to panel
        p.add(b);
  
        f.add(p);
  
        // set the size of frame
        f.setSize(400, 400);
  
        f.show();
    }
  
    // if button is pressed
    public void actionPerformed(ActionEvent e)
    {
        String s1 = e.getActionCommand();
        if (s1.equals("click")) {
            // create a window
            w = new JWindow(f);
  
            // set panel
            JPanel p = new JPanel();
  
            // create a label
            JLabel l = new JLabel("this is first window");
  
            // create a button
            JButton b = new JButton("Click me");
  
            // add Action listener
            b.addActionListener(s);
  
            // set border
            p.setBorder(BorderFactory.createLineBorder(Color.black));
  
            p.add(l);
            p.add(b);
            w.add(p);
  
            // set background
            p.setBackground(Color.red);
  
            // setsize of window
            w.setSize(200, 100);
  
            // set visibility of window
            w.setVisible(true);
  
            // set location of window
            w.setLocation(100, 100);
        }
        else {
            // create a window
            w1 = new JWindow(w);
  
            // set panel
            JPanel p = new JPanel();
  
            // create a label
            JLabel l = new JLabel("this is the second window");
  
            // set border
            p.setBorder(BorderFactory.createLineBorder(Color.black));
  
            p.add(l);
  
            w1.add(p);
  
            // set background
            p.setBackground(Color.blue);
  
            // setsize of window
            w1.setSize(200, 100);
  
            // set visibility of window
            w1.setVisible(true);
  
            // set location of window
            w1.setLocation(210, 210);
        }
    }
}

输出 :

注意:以上程序可能无法在在线编译器中运行,请使用离线 IDE