当前位置: 首页 > backend >正文

Java Swing 自定义JOptionPane

运行后的样式

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class demoB {public static void main(String[] args) {SwingUtilities.invokeLater(() -> {JFrame jf = new JFrameDemo();jf.setVisible(true);});}static class JFrameDemo extends JFrame {private JButton button;public JFrameDemo() {setTitle("主窗口");setSize(400, 300);setDefaultCloseOperation(EXIT_ON_CLOSE);setLocationRelativeTo(null);button = new JButton("打开对话框");button.addActionListener(new DialogListener());getContentPane().add(button, BorderLayout.CENTER);}public JButton getJButton() {return button;}}static class DialogListener implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {// 主面板(设置内边距)JPanel mainPanel = new JPanel(new GridLayout(2, 1, 5, 10)); // 行间距10像素mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); // 外边距// 创建两行输入区域mainPanel.add(createInputRow("按钮1"));mainPanel.add(createInputRow("按钮2"));// 显示对话框JOptionPane.showOptionDialog(null,mainPanel,"标题",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,new Object[]{},  // 必须空数组null);}// 创建单行布局(核心修改部分)private JPanel createInputRow(String buttonText) {JPanel panel = new JPanel(new BorderLayout(10, 0)); // 水平间距10像素JTextField textField = new JTextField();textField.setPreferredSize(new Dimension(200, 30)); // 固定高度30JButton button = new JButton(buttonText);button.setPreferredSize(new Dimension(80, 30));    // 固定高度30panel.add(textField, BorderLayout.CENTER);panel.add(button, BorderLayout.EAST);return panel;}}
}

http://www.xdnf.cn/news/9110.html

相关文章:

  • Python面试1
  • 传输线上的信号速度与阻抗无关,主要由频率决定
  • leetcode:2160. 拆分数位后四位数字的最小和(python3解法,数学相关算法题)
  • OceanBase数据库全面解析(数据定义篇DDL)
  • numpy与matplotlib学习——数据可视化入门
  • 2025密云马拉松复盘
  • 如何实现 C/C++ 与 Python 的通信
  • sqli-labs第二十七关——Trick with selectunion
  • AI时代新词-AI芯片(AI - Specific Chip)
  • 大模型量化原理
  • vue + ant-design + xlsx 实现表格导出进度提示功能
  • 【JSON-To-Video】JSON转视频教程,快速添加配音与字幕!
  • 【Java】异常处理
  • 【C++初阶】模拟实现string(二):swap优化与写时拷贝机制
  • 知识宇宙-职业篇:互联网产品经理PM
  • Debian操作系统全面解析:从起源到应用
  • MPI与多线程(如OpenMP)混合编程注意事项与性能优化
  • React与Vue的内置指令对比
  • 【C/C++】如何在一个事件驱动的生产者-消费者模型中使用观察者进行通知与解耦
  • [TriCore] 01.QEMU 虚拟化 TriCore 架构中的寄存器 指令
  • 小红书文章内容提取免费API接口教程
  • java基础(面向对象进阶高级)内部类
  • leetcode hot100刷题日记——17.搜索插入位置
  • Linux中logger命令的使用方法详解
  • 嵌入式开发STM32 -- 江协科技笔记
  • window 显示驱动开发-呈现开销改进(二)
  • c++进阶——智能指针
  • maven中的grpc编译插件protobuf-maven-plugin详解
  • SQL进阶之旅 Day 4:子查询与临时表优化
  • C/C++语言中成双成对出现的都有哪些?