java基础-swing图形界面-按钮

  • Post author:
  • Post category:java


1.常用方法

方法 描述
JButton() 创建一个没有文本或图标的按钮
JButton(Icon icon) 创建一个带图标的按钮
JButton(String text) 创建一个带文本的按钮
JButton(Action a) 创建一个按钮,其中的属性取自提供的 Action
JButton(String text, Icon icon) 创建一个带有初始文本和图标的按钮

2.基本示例

package test.jdk.swing.jbutton;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeListener;

public class TestJButton extends JFrame{

    //面板
    private JPanel jPanel;
    //什么都没有的按钮
    private JButton jButton;
    //带文字的按钮
    private JButton jButton01;
    //带图片的按钮
    private JButton jButton02;
    //带事件的按钮
    private JButton jButton03;
    //按钮方法使用
    private JButton jButton04;


    public TestJButton(){
        jPanel = new JPanel();
        //什么都没有的按钮
        jButton = new JButton();
        //带文字的按钮
        jButton01 = new JButton("测试按钮");
        //带图片的按钮
        //图片位置问题,图片应放在项目根目录下,项目名是test,这里图片的位置就是test/image/3.png
        //如果是多模块工程,放在父级目录下
        ImageIcon imageIcon = new ImageIcon("image/3.png");
        jButton02 = new JButton(imageIcon);
        jButton02.setText("图片按钮");
        //带事件的按钮
        jButton03 = new JButton(new ColorAction(Color.red));
        jButton03.setText("事件按钮");
        System.out.println(jButton03.getText());
        //按钮常用方法
        jButton04 = new JButton();
        jButton04.setText("按钮常用方法");
        jButton04.setIcon(imageIcon);
        jButton04.setSize(400, 400); //没用
        jButton04.setBounds(40, 40, 400, 400); //没用
        jButton04.setLocation(500, 500); //没用
        //JButton在FlowLayout、BorderLayout等一些布局中使用setSize()设置大小没效果,可以使用setPreferredSize方法进行设置
        //这里高度不够会显示不出文字
        jButton04.setPreferredSize(new Dimension(300,300));
        jButton04.setHorizontalTextPosition(SwingConstants.CENTER); //文本相对于图标的水平位置
        jButton04.setVerticalTextPosition(SwingConstants.BOTTOM); //文本相对于图片的垂直位置
        jButton04.setOpaque(false);//设置控件是否透明,true为不透明,false为透明
        jButton04.setContentAreaFilled(false);//设置图片填满按钮所在的区域
        jButton04.setMargin(new Insets(10, 10, 10, 10));//设置按钮边框和标签文字之间的距离
        jButton04.setFocusPainted(false);//设置这个按钮是不是获得焦点
        jButton04.setBorderPainted(false);//设置是否绘制边框
        jButton04.setBorder(null);//设置边框
        //按钮添加点击事件
        jButton04.addActionListener(e -> System.out.println("点击了"));

        //面板添加按钮
        jPanel.add(jButton);
        jPanel.add(jButton01);
        jPanel.add(jButton02);
        jPanel.add(jButton03);
        jPanel.add(jButton04);
        //添加面板
        add(jPanel);
    }

    /**
     * 显示方法
     */
    public void showFrame(){
        setTitle("测试图形界面程序");
        //设置窗口的大小
        setSize(800, 800);
        //设置距离屏幕左上角的距离
        setLocation(500, 100);
        //必须添加完对应的组件之后设置显示
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public class ColorAction extends AbstractAction {

        public ColorAction(Color c) {
            putValue("color", c);
        }

        public ColorAction(String name, Icon icon, Color c) {
            putValue(Action.NAME, name);
            putValue(Action.SMALL_ICON, icon);
            putValue(Action.SHORT_DESCRIPTION, "Set panel color to " + name.toLowerCase());
            putValue("color", c);
        }

        public void actionPerformed(ActionEvent event) {
            Color c = (Color) getValue("color");
            jButton03.setBackground(c);
        }
    }


    public static void main(String[] args) {
        TestJButton testJButton = new TestJButton();
        testJButton.showFrame();
    }


}

显示效果



版权声明:本文为qq_39482039原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。