自定义弹窗
class JDialogUse {
public JDialogUse() {
final JFrame jf = new JFrame("测试窗口");
jf.setSize(300, 300);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JButton btn = new JButton("显示自定义对话框");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showCustomDialog(jf, jf);
}
});
JPanel panel = new JPanel();
panel.add(btn);
jf.setContentPane(panel);
jf.setVisible(true);
}
/**
* 显示一个自定义的对话框
*
* @param owner 对话框的拥有者
* @param parentComponent 对话框的父级组件
*/
private static void showCustomDialog(Frame owner, Component parentComponent) {
// 创建一个模态对话框
final JDialog dialog = new JDialog(owner, "提示", true);
// 设置对话框的宽高
dialog.setSize(250, 150);
// 设置对话框大小不可改变
dialog.setResizable(false);
// 设置对话框相对显示的位置
dialog.setLocationRelativeTo(parentComponent);
// 创建一个标签显示消息内容
JLabel messageLabel = new JLabel("对话框消息内容");
// 创建一个按钮用于关闭对话框
JButton okBtn = new JButton("确定");
okBtn.addActionListener(e -> {
// 关闭对话框
dialog.dispose();
});
// 创建对话框的内容面板, 在面板内可以根据自己的需要添加任何组件并做任意是布局
JPanel panel = new JPanel();
// 添加组件到面板
panel.add(messageLabel);
panel.add(okBtn);
// 设置对话框的内容面板
dialog.setContentPane(panel);
// 显示对话框
dialog.setVisible(true);
}
}
2、3 面板
面板也是一个容器,但是它不能单独存在,只能存在于窗口中,一个面板对象代表了一个长方形的区域,在这个区域中可以容纳其他组件,在程序中通常会使面板来实现一些特殊的布局。
普通面板
public class JPanelUse {
public static void main(String[] args) {
// 初始化窗口
JFrame jFrame = new JFrame("面板窗口");
jFrame.setVisible(true);
jFrame.setSize(400, 400);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// 初始化面板:采用默认的流式布局或指定布局
JPanel jPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
// 设置面板大小
jPanel.setSize(100, 100);
// 设置面板背景颜色
jPanel.setBackground(new Color(164, 24, 24));
// 将面板添加到窗口
jFrame.add(jPanel);
}
}
滚动面板
JScrollPane,滚动面板,支持水平和垂直滚动视图。文本区域、表格等需要显示较多数据而空间又有限时,通常使用 JScrollPane 进行包裹以实现滚动显示。
public class JScrollPaneUse {
public JScrollPaneUse() {
JFrame jFrame = new JFrame("面板窗口");
// 创建文本区域组件
JTextArea textArea = new JTextArea("这是一个文本");
// 自动换行
textArea.setLineWrap(true);
// 设置字体
textArea.setFont(new Font(null, Font.PLAIN, 18));
// 初始化滚动面板面板
/**
* 全参构造参数说明:
* view: 需要滚动显示的视图组件
* vsbPolicy: 垂直滚动条的显示策略
* ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED // 需要时显示(默认)
* ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER // 从不显示
* ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS // 总是显示
* hsbPolicy: 水平滚动条的显示策略
* ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED // 需要时显示(默认)
* ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER // 从不显示
* ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS // 总是显示
* 常用方法
* 设置滚动显示视图内容组件:setViewportView(Component view)
* 设置垂直滚动条的显示策略:setVerticalScrollBarPolicy(int policy)
* 设置水平滚动条的显示策略:setHorizontalScrollBarPolicy(int policy)
*/
JScrollPane jScrollPane = new JScrollPane(
textArea,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
);
jFrame.setContentPane(jScrollPane);
// 窗口设置为公共代码,后面全部省略
jFrame.setVisible(true);
jFrame.setSize(400, 400);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}