Java摇摆 |带有示例的 JWindow
JWindow 是Java Swing 的一部分,它可以出现在用户桌面的任何部分。它与 JFrame 的不同之处在于 JWindow 没有 JFrame 具有的标题栏或窗口管理按钮,如最小化、最大化和关闭。 JWindow 可以包含几个组件,例如按钮和标签。
类的构造函数是:
- JWindow() : 创建一个没有任何指定所有者的空窗口
- JWindow(Frame o) :创建一个空的Window,指定的frame作为它的所有者
- JWindow(Frame o) : 创建一个空的窗口,指定的框架为它的所有者
- JWindow(Window o) : 创建一个空的 Window 指定的窗口作为它的所有者
- JWindow(Window o, GraphicsConfiguration g) :创建一个空窗口,指定窗口为所有者,指定图形配置。
- JWindow(GraphicsConfiguration g) :使用指定的图形配置 g 创建一个空窗口。
常用方法
- setLayout(LayoutManager m) : 将 Window 的布局设置为指定的布局管理器
- setContentPane(Container c) : 设置窗口的 ContentPane 属性
- getContentPane() :获取作为此窗口的 ContentPane 的容器
- add(Component c) : 将组件添加到窗口
- isVisible(boolean b) : 设置窗口的可见性,如果布尔值为真则可见,否则不可见
- update(Graphics g) : 调用paint(g)函数
- remove(Component c) : 移除组件 c
- getGraphics() :返回组件的图形上下文。
- getLayeredPane() :返回窗口的分层窗格
- setContentPane(Container c) :设置窗口的内容窗格
- setLayeredPane(JLayeredPane l) :设置窗口的分层窗格
- setRootPane(JRootPane r) : 设置窗口的 rootPane
- setTransferHandler(TransferHandler n) :设置 transferHandler 属性,这是一种支持将数据传输到此组件的机制。
- setRootPaneCheckingEnabled(boolean enabled) :设置对 add 和 setLayout 的调用是否转发到 contentPane。
- setRootPane(JRootPane root) :设置窗口的 rootPane 属性。
- setGlassPane(Component glass) :设置窗口的 glassPane 属性。
- repaint(long time, int x, int y, int width, int height) : 在 time 毫秒内重绘该组件的指定矩形。
- remove(Component c) :从窗口中删除指定的组件。
- isRootPaneCheckingEnabled() :返回对 add 和 setLayout 的调用是否转发到 contentPane 。
- getTransferHandler() :返回 transferHandler 属性。
- getRootPane() :返回此窗口的 rootPane 对象。
- getGlassPane() :返回此窗口的 glassPane 对象。
- createRootPane() :由构造方法调用以创建默认的 rootPane。
- 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