让我们从最简单的Swing程序开始。
我们将使用JFrame(它是一个顶层容器)来创建我们的第一个应用程序。要创建和显示JFrame,我们需要执行以下操作:
要创建JFrame对象,我们可以使用JFrame类的构造函数。
在下面的代码中,我们使用接受字符串的构造函数。字符串值将显示为JFrame的标题。
表示Swing组件的类位于javax.swing包中,所以是JFrame类。
以下代码创建一个JFrame对象,其标题设置为“Swing":
// Create a JFrame object JFrame frame = new JFrame("Swing");
当我们创建一个JFrame对象,默认情况下,它是不可见的。我们必须调用它的 setVisible(boolean visible)
方法使其可见。true参数使框架可见,隐藏框架通过false到setVisible方法。
使JFrame在屏幕上可见
frame.setVisible(true);
以下代码将两个语句封装为一个语句,以创建和显示JFrame。
new JFrame("Swing").setVisible(true);
import javax.swing.JFrame; public class Main { public static void main(String[] args) { // Create a frame JFrame frame = new JFrame("Swing"); // Display the frame frame.setVisible(true); } }
我们可以定义JFrame的四个行为之一确定当JFrame关闭时会发生什么。
常量在javax.swing.WindowsConstants接口中定义。
JFrame类实现了WindowsConstants接口。我们可以使用JFrame.CONSTANT_NAME语法或引用所有这些常量我们可以使用WindowsConstants.CONSTANT_NAME语法。
四个常数是
DO_NOTHING_ON_CLOSE
HIDE_ON_CLOSE
DISPOSE_ON_CLOSE
EXIT_ON_CLOSE
我们可以通过将四个常量之一传递给它来设置JFrame的默认关闭行为setDefaultCloseOperation()方法。
以下代码显示了当JFrame关闭时如何退出应用程序
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
上面的JFrame没有可视区域。它只显示标题栏。
我们需要设置JFrame的大小和位置以显示其内容区域。
帧的大小由其宽度和高度(以像素为单位)定义我们可以使用setSize(int width,int height)方法设置它们。
该位置由相对于屏幕左上角的JFrame左上角的(x,y)坐标以像素为单位定义。
默认情况下,它的位置设置为(0,0),这是JFrame显示的原因在屏幕的左上角。
我们可以使用其 setLocation(int x,int y)
方法设置JFrame的(x,y)坐标。
要在一个步骤中设置其大小和位置,请使用其setBounds(int x,int y,int width,int height)方法。
下面的代码给出了JFrame的大小和位置。
import javax.swing.JFrame; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("Swing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Set the x, y, width and height properties frame.setBounds(50, 50, 200, 200); frame.setVisible(true); } }
要将JFrame放在屏幕中央,使用null参数调用其setLocationRelativeTo()方法。
当向JFrame添加UI控件时,我们将它们添加到JFrame的内容窗格。
JFrame的内容窗格保存JFrame的Swing组件。
要从JFrame获取内容窗格的引用,请使用以下代码。
// Create a JFrame JFrame frame = new JFrame("Test"); // Get the reference of the content pane Container contentPane = frame.getContentPane();
从JFrame获取内容窗格的引用后,我们可以添加组件通过使用add()方法。
// Add aComponent to contentPane contentPane.add(aComponent);
下面的代码向JFrame添加了一个JButton。JButton类的一个对象表示一个按钮,例如消息框上的OK按钮。
JButton包含标签文本。 下一行使用关闭作为JButton的标签文本。
// Create a JButton with Close text JButton closeButton = new JButton("Close");
要将closeButton添加到JFrame的内容窗格,我们必须做两件事情:
获取JFrame的内容窗格的引用。
Container contentPane = frame.getContentPane();
调用内容窗格的add()方法。
contentPane.add(closeButton);
要使用一行代码将JButton添加到JFrame,请将所有语句合并为一个语句。
frame.getContentPane().add(new JButton("Close"));
要使用一行代码将JButton添加到JFrame,请将所有语句合并为一个语句。...
import java.awt.Container; //from ww w. j a va2 s .c o m import javax.swing.JButton; import javax.swing.JFrame; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("JFrame"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contentPane = frame.getContentPane(); // Add a close button JButton closeButton = new JButton("Close"); contentPane.add(closeButton); // set the size of the frame 300 x 200 frame.setBounds(50, 50, 300, 200); frame.setVisible(true); } }
JFrame的pack()方法检查JFrame上的所有组件,并决定它们的首选大小,并设置JFrame的大小刚好足以显示所有组件。
当我们调用pack()方法时,我们不需要设置JFrame的大小。pack()方法将计算JFrame的大小并设置它。
当使用pack()方法时,我们不需要调用setBounds()方法。
要在pack()方法后定位JFrame,请使用setLocation(x,y)方法。
import java.awt.Container; // w ww . j a v a 2 s .co m import javax.swing.JButton; import javax.swing.JFrame; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("JFrame"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Add a close button JButton closeButton = new JButton("Close"); Container contentPane = frame.getContentPane(); contentPane.add(closeButton); // Calculates and sets appropriate size for the frame frame.pack(); frame.setVisible(true); } }
我们可以使用编程方式设置JFrame的状态setExtendedState(int state)方法。
使用在继承JFrame类的java.awt.Frame类中定义的常量来指定状态。
使用在继承JFrame类的java.awt.Frame类中定义的常量来指定状态。...
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
下表列出了定义JFrame的状态的常量
JFrame状态常量 | 描述 |
---|---|
NORMAL | JFrame以正常大小显示。 |
ICONIFIED | JFrame显示为最小化状态。 |
MAXIMIZED_HORIZ | JFrame显示为水平最大化,但垂直尺寸正常。 |
MAXIMIZED_VERT | JFrame显示为水平最大化,但垂直尺寸正常。... |
MAXIMIZED_BOTH | JFrame显示为水平和垂直最大化。 |
有时我们可能想在JFrame或JDialog中使用默认按钮。默认按钮是的一个实例JButton类,当用户按下键盘上的一个键时激活。
激活默认按钮的键由外观定义。
通常,激活默认按钮的键是Enter键。
我们可以为JRootPane设置一个默认按钮,它存在于JFrame,JDialog,JWindow,JApplet和JInternalFrame中。
通常,我们将OK按钮设置为JDialog上的默认按钮。如果JRootPane设置了默认按钮,按Enter键将激活该按钮。
// Create a JButton JButton okButton = new JButton("OK"); // Set okButton as the default button frame.getRootPane().setDefaultButton(okButton);
我们可以向JFrame或任何其他顶级Swing窗口添加一个窗口侦听器,以便通知窗口状态的更改。
下面的代码将一个窗口侦听器添加到一个名为frame的JFrame。
如果我们感兴趣的只是监听几个窗口状态的变化,我们可以使用WindowAdapter类而不是WindowListener接口。
WindowAdapter类提供了WindowListener接口中所有七个方法的空实现。
import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.io.IOException; //ww w . j a v a 2s. c o m import javax.swing.JFrame; public class Main { public static void main(String[] args) throws IOException { JFrame frame = new JFrame(); frame.addWindowListener(new WindowListener() { @Override public void windowOpened(WindowEvent e) { System.out.println("JFrame has been made visible first time"); } @Override public void windowClosing(WindowEvent e) { System.out.println("JFrame is closing."); } @Override public void windowClosed(WindowEvent e) { System.out.println("JFrame is closed."); } @Override public void windowIconified(WindowEvent e) { System.out.println("JFrame is minimized."); } @Override public void windowDeiconified(WindowEvent e) { System.out.println("JFrame is restored."); } @Override public void windowActivated(WindowEvent e) { System.out.println("JFrame is activated."); } @Override public void windowDeactivated(WindowEvent e) { System.out.println("JFrame is deactivated."); } }); // Use the WindowAdapter class to intercept only the window closing event frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.out.println("JFrame is closing."); } }); } }
我们完成了一个窗口(JFrame,JDialog或JWindow),我们应该调用它的dispose()方法。
dispose()方法使窗口不可见,并将资源释放到操作系统。
Java Swing教程 -Java Swing MDIMDI代表多文档接口。在MDI应用程序中,打开一个主窗口,并在主窗口中打开多个子窗口。在MDI应用...
Java Swing教程 -Java Swing菜单以下步骤描述如何为我们的应用程序创建添加菜单的过程。创建一个JMenuBar类的对象,并使用其setJ...
注意:适用版本:mybatis-plus-generator 3.5.1 及其以上版本,对历史版本不兼容!快速入门安装dependencygroupIdcom.baomidou/g...
MyBatis-Plus 条件构造器-AbstractWrappereq(R column, Object val)eq(boolean condition, R column, Object val)等于=例:eq("...