Java swing 自定义窗口最大、最小和关闭的极简方法,
直接代码伺候:
package com.yufu.test;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.ImageIcon;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class 鸡精简 extends JFrame {
/*** @author boloyufu*/private static final long serialVersionUID = -4237601758415925694L;private JPanel contentPane;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {鸡精简 frame = new 鸡精简();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** 创建一个极精简的窗体不附带其他功能*/public 鸡精简() {setUndecorated(true); //先要禁用窗口原部件setTitle("自定义窗口放大放小");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(250, 250, 450, 300);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);JToggleButton btn_big = new JToggleButton(""); //一定要用JToggleButton类,因为它表示了开关的2种状态,才可以用下面的//ItemEvent、getStateChange()的监听及方法btn_big.setIcon(new ImageIcon(鸡精简.class.getResource("/com/yufu/test/images/big01.png")));btn_big.setSelectedIcon(new ImageIcon(鸡精简.class.getResource("/com/yufu/test/images/big11.png")));btn_big.setRolloverSelectedIcon(new ImageIcon(鸡精简.class.getResource("/com/yufu/test/images/big11.png")));btn_big.setRolloverIcon(new ImageIcon(鸡精简.class.getResource("/com/yufu/test/images/big11.png")));btn_big.setBounds(46, 3, 22, 22);btn_big.addItemListener(new ItemListener() {public void itemStateChanged(ItemEvent e) {aaaa(e);需要自定义执行的最大化执行方法}private void aaaa(ItemEvent e) { //自定义的方法if (e.getStateChange() == ItemEvent.SELECTED) {setExtendedState(JFrame.MAXIMIZED_BOTH);// 最大化窗体} else {setExtendedState(JFrame.NORMAL);// 恢复普通窗体状态}}});contentPane.setLayout(null);contentPane.add(btn_big);JButton btn_close = new JButton("");btn_close.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {dispose(); //关闭窗口}});btn_close.setIcon(new ImageIcon(鸡精简.class.getResource("/com/yufu/test/images/close1.png")));btn_close.setBounds(4, 3, 22, 22);contentPane.add(btn_close);JButton btn_small = new JButton("");btn_small.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {setExtendedState(JFrame.ICONIFIED);//最小化窗口}});btn_small.setIcon(new ImageIcon(鸡精简.class.getResource("/com/yufu/test/images/small1.png")));btn_small.setBounds(25, 3, 22, 22);contentPane.add(btn_small);}
}
效果图:
点击最大化时图标直接变成自设的最大化提醒图标:
最大化时的样子:
再次点击恢复原来尺寸的大小:
则缩小到任务栏:
点击关闭,则关闭窗口。
本实例是最精简化的一个实例,不具备鼠标拖动窗口功能。若要实现鼠标拖动窗口功能,请参阅其他文章和实例。