首页 > 社交 > 科普中国

JavaGUI

常驻编辑 科普中国 2022-06-24 刻度   对话框   用户界面   组件   布局   按钮   选项   面板   图形   文本   窗口   文件
jList = new JList<>(); // 设置一下首选大小 jList.setPreferredSize(new Dimension(200, 100)); // 允许可间断的多选 jList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // 设置选项数据(内部将自动封装成 ListModel ),这里的数组列表可以使用Vector集合进行 jList.setListData(new String[]{"香蕉", "雪梨", "苹果", "荔枝"}); // 添加选项选中状态被改变的监听器 jList.addListSelectionListener(e -> { // 获取所有被选中的选项索引 int[] indices = jList.getSelectedIndices(); // 获取选项数据的 ListModel ListModel listModel = jList.getModel(); // 输出选中的选项 for (int index : indices) { System.out.println("选中: " + index + " = " + listModel.getElementAt(index)); } System.out.println(); }); jPanel.add(jList); jFrame.setContentPane(jPanel); // 省略公共代码 } }

文本框

JTextField,文本框。JTextField 用来编辑单行的文本。tIS拜客生活常识网

JPasswordField,密码框。JPasswordField 继承自 JTextField,只是显示输入的内容时用特定的字符替换显示(例如 * 或 ),用法和 JTextField 基本一致。tIS拜客生活常识网

JTextArea,文本区域。JTextArea 用来编辑多行的文本。JTextArea 除了允许多行编辑外,其他基本用法和 JTextField 基本一致。tIS拜客生活常识网

class JTextFieldAndJPasswordFieldAndJTextAreaUse {
    public JTextFieldAndJPasswordFieldAndJTextAreaUse() {
        JFrame jFrame = new JFrame("列表窗口");
        JPanel jPanel = new JPanel(new GridLayout(3,1));

        /**
         * 文本框
         */
        final JTextField jTextField = new JTextField(10);
        jTextField.setFont(new Font(null, Font.PLAIN, 20));
        jPanel.add(new JLabel("用户名"));
        jPanel.add(jTextField);

        /**
         * 密码框
         */
        final JPasswordField jPasswordField = new JPasswordField(32);
        jPanel.add(new JLabel("密 码"));
        jPanel.add(jPasswordField);

        /**
         * 文本域
         */
        // 创建一个 5 行 10 列的文本区域
        JTextArea jTextArea = new JTextArea(5, 10);
        // 自动换行
        jTextArea.setLineWrap(true);
        jPanel.add(new JLabel("文本域"));
        jPanel.add(jTextArea);

        jFrame.setContentPane(jPanel);
        // 省略公共代码
    }
}

进度条和滑块

JProgressBar,进度条。以可视化形式显示某些任务进度的组件,进度条中心可显示进度百分比的文本表示形式。一个任务的进度长度未知时,可将进度条设置为不确定模式。不确定模式的进度条持续地显示动画来表示正进行的操作。当可以确定任务长度和进度量时,则可设置进度条的最大最小值,以及更新进度条的进度值,将其切换回确定模式。tIS拜客生活常识网

JSlider,滑块。以图形方式在有界区间内通过移动滑块来选择值的组件。滑块可以显示主刻度标记以及主刻度之间的次刻度标记。刻度标记之间的值的个数由 setMajorTickSpacing(int) 和 setMinorTickSpacing(int) 来控制。刻度标记的绘制由 setPaintTicks(boolean) 控制。滑块也可以在固定时间间隔(或在任意位置)沿滑块刻度打印文本标签。标签的绘制由 setLabelTable(Dictionary) 和 setPaintLabels(boolean) 控制。
PS: 当滑块获得焦点后,按键盘上的 上下左右键 也可以滑动滑块。
tIS拜客生活常识网

class JProgressBarAndJSliderUse {
    public JProgressBarAndJSliderUse() {
        JFrame jFrame = new JFrame("列表窗口");
        JPanel jPanel = new JPanel(new GridLayout(3, 1));

        /**
         * 进度条:
         *     全参构造参数说明:JProgressBar(int orient, int min, int max)
         *         orient: 进度条的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL,默认为水平方向
         *         min: 最小进度值;max: 最大进度值
         *     常用方法:
         *         设置最小进度值、最大进度值和当前进度值:setMinimum(int min),setMaximum(int max),setValue(int n)
         *         获取当前进度值:getValue()
         *         获取当前进度的百分比:getPercentComplete()
         *         是否绘制百分比文本(进度条中间显示的百分数):setStringPainted(boolean b)
         *         设置进度条进度是否为不确定模式:setIndeterminate(boolean newValue)
         *         设置进度条的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL:setOrientation(int newOrientation)
         *         添加进度条的进度改变监听器:addChangeListener(ChangeListener l)
         */
        JProgressBar jProgressBar = new JProgressBar(0, 100);
        jProgressBar.setValue(20);
        jProgressBar.addChangeListener(e -> {
            System.out.println("当前进度值: " + jProgressBar.getValue() + "; " +
                    "进度百分比: " + jProgressBar.getPercentComplete());
        });
        jPanel.add(jProgressBar);

        /**
         * 滑块:
         *     全参构造参数说明:JSlider(int orientation, int min, int max, int value)
         *         orientation: 滑块的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL,默认为水平方向
         *         min: 滑块的最小值; max: 滑块的最大值
         *         value: 滑块的初始值(默认为 最小值 和 最大值 之间的 中间值)
         *     常用方法:
         *         设置滑块的最小值、最大值、当前值:setMinimum(int min),setMaximum(int max),setValue(int n)
         *         获取滑块的当前值:getValue()
         *         设置主刻度标记间隔:setMajorTickSpacing(int n)
         *         设置单个主刻度内的次刻度标记间隔:setMinorTickSpacing(int n)
         *         设置是否绘制刻度线:setPaintTicks(boolean b)
         *         设置是否绘制刻度标签(刻度值文本):setPaintLabels(boolean b)
         *         设置是否绘制滑道:setPaintTrack(boolean b)
         *         设置是否颠倒刻度值(刻度值从大到小):setInverted(boolean b)
         *         设置滑块是否对齐到刻度。设置为 true,则滑块最终只能在有刻度的位置取值,即滑块取值不连续:setSnapToTicks(boolean b)
         *         添加滑块的值改变监听器:addChangeListener(ChangeListener l)
         */
        JSlider jSlider = new JSlider(0, 20, 10);
        // 设置主刻度间隔
        jSlider.setMajorTickSpacing(5);
        // 设置次刻度间隔
        jSlider.setMinorTickSpacing(1);
        // 绘制刻度和标签
        jSlider.setPaintTicks(true);
        jSlider.setPaintLabels(true);
        jSlider.addChangeListener(e -> {
            System.out.println("当前值: " + jSlider.getValue());
        });
        jPanel.add(jSlider);

        jFrame.setContentPane(jPanel);
        // 省略公共代码
    }
}
    

相关阅读:

  • 关于温度的知识
  • 又是一年“618”,生鲜电商静悄悄?
  • matplotlib
  • 家乡异地皆乐趣:浪琴Spirit
  • 崩溃的瞬间
  • 好物分享:适合上班族秋天佩戴的平价手表
  • 裁员在路上,谷歌告别好日子?
  • 欧米茄推出全新
  • 万宝龙1858系列两地时腕表“中国特别款”开箱短评「最
  • 看到这款表是“真的酸”
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。