• Swing系列之控件一


    Swing系列之控件

    JTextArea

    JTextArea是一个实现多行文本的控件

    构造函数

    • JTextArea() 构造新的TextArea。
    • JTextArea(Document doc) 构造新的 JTextArea,使其具有给定的文档模型,所有其他参数均默认为 (null, 0, 0)。
    • JTextArea(Document doc, String text, int rows, int columns) 构造具有指定行数和列数以及给定模型的新的 JTextArea。
    • JTextArea(int rows, int columns) 构造具有指定行数和列数的新的空 TextArea。
    • JTextArea(String text) 构造显示指定文本的新的 TextArea。
    • JTextArea(String text, int rows, int columns) 构造具有指定文本、行数和列数的新的 TextArea。

    常用的方法

    • append(String text) 在末尾插入文本
    • getColumns()
    • getLineWrap() 获取文本区的换行策略
    • setLineWrap(boolean wrap) 设置换行的策略,如果设置为true,那么就会在一行结束的时候自动换行
    • setWrapStyleWord(boolean wrap) 设置断行不断字,也就是在你写单词写到末尾的时候如果没有写完,那么就会将你这个单词一起移到下一行来,而不是只移动一个单词下来,这样就会单词不分割了
    • setFont(Font f) 设置字体
    • insert(String str, int pos) 将指定文本插入指定位置。
    • replaceRange(String str, int start, int end) 用给定的新文本替换从指示的起始位置到结尾位置的文本。
    • setRows(int rows) 设置此 TextArea 的行数。

    JScrollPane

    构造函数

    • JScrollPane() 创建一个空的(无视口的视图)JScrollPane,需要时水平和垂直滚动条都可显示。
    • JScrollPane(Component view) 创建一个显示指定组件内容的 JScrollPane,只要组件的内容超过视图大小就会显示水平和垂直滚动条。
    • JScrollPane(Component view, int vsbPolicy, int hsbPolicy) 创建一个 JScrollPane,它将视图组件显示在一个视口中,视图位置可使用一对滚动条控制。vsbPolicy和hsPolicy是用来控制滚动条何时出现的,其中的值如下:
    • HORIZONTAL_SCROLLBAR_ALAWAYS: 总是显示水平滚动轴。
    • HORIZONTAL_SCROLLBAR_AS_NEEDED:当组件内容水平区域大于显示区域时出现水平滚动轴。
    • HORIZONTAL_SCROLLBAR_NEVER: 总是不显示水平滚动轴。
    • VERTICAL_SCROLLBAR_ALWAYS: 总是显示垂直滚动轴。
    • VERTICAL_SCROLLBAR_AS_NEEDED: 当组件内容垂直区域大于显示区域时出现垂直滚动轴。
    • VERTICAL_SCROLLBAR_NEVER: 总是不显示垂直滚动轴。
    • JScrollPane(int vsbPolicy, int hsbPolicy) 创建一个具有指定滚动条策略的空(无视口的视图)JScrollPane。

    常用的方法

    • setHorizontalScrollBarPolicy(int policy) 确定水平滚动条何时显示在滚动窗格上。
    • setVerticalScrollBarPolicy(int policy) 确定垂直滚动条何时显示在滚动窗格上。
    • setColumnHeaderView(Component view) 创建一个列标题视口(如果有必要),设置其视图然后将此列标题视口添加到滚动窗格。设置水平表头
    • setRowHeaderView(Component view) 设置垂直表头,即是创建一个行标题视口
    • setViewportBorder(Border viewportBorder) 围绕视口添加一个边界。

    实例

    package demo;
    
    import javax.swing.*;
    import javax.swing.border.Border;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class demo extends JFrame {
        private JTextField textField;
    
        public demo() {
            super();
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setBounds(100, 100, 400, 300);
            JPanel panel_North = new JPanel();
            this.getContentPane().add(panel_North, BorderLayout.NORTH);
            FlowLayout flowLayout = (FlowLayout) panel_North.getLayout();
            flowLayout.setAlignment(FlowLayout.LEFT);
    
            JLabel label = new JLabel("name:");
            label.setFont(new Font("微雅软黑", Font.BOLD + Font.ITALIC, 20));
            panel_North.add(label);
    
            textField = new JTextField(20);
            textField.setFont(new Font("微雅软黑", Font.BOLD + Font.ITALIC, 20));
            panel_North.add(textField);
    
            JTextArea textArea = new JTextArea(6, 30);
            textArea.setFont(new Font("微雅软黑", Font.BOLD + Font.ITALIC, 20));
            textArea.setWrapStyleWord(true);
            textArea.setLineWrap(true);
    
            JPanel panel_center = new JPanel();
    
            FlowLayout flowLayout_center = (FlowLayout) panel_center.getLayout();
            flowLayout_center.setAlignment(FlowLayout.LEFT);
            this.getContentPane().add(panel_center, BorderLayout.CENTER);  //设置中间的组件
    
    
            JScrollPane scrollPane = new JScrollPane(textArea);
            scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);   //设置水平滚动条出现的时间
            scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);//设置垂直滚动条出现的时间
            panel_center.add(scrollPane);
    
            JPanel panel_header = new JPanel();
            JLabel label_header = new JLabel("水平表头");
            panel_header.add(label_header);
            scrollPane.setColumnHeaderView(panel_header);   //设置水平表头
    
            JPanel panel_v = new JPanel();
            JLabel label_v = new JLabel("垂直表头");
            panel_v.add(label_v);
            scrollPane.setRowHeaderView(panel_v);    //设置垂直表头
    
    
        }
    
        public static void main(String[] args) {
            demo f = new demo();
            f.setVisible(true);
    
        }
    
    }
    
    

    JScrollBar

    滚动条的实现。用户在滚动条内移动滑块可确定显示区域中的内容。该程序通常将显示调整为滚动条的结束代表可显示内容的结束,或内容的 100%。滚动条的开始为可显示内容的开始,或 0%。然后滑块在其边界中的位置转换为可显示内容对应的百分比。

    构造函数

    • JScrollBar() 创建具有下列初始值的垂直滚动条
    • JScrollBar(int orientation) 创建具有指定方向和下列初始值的滚动条,其中的值为JScrollBar.VERTICAL(垂直滚动条),JScrollBar.HORIZONTAL(水平滚动条)
    • JScrollBar(int orientation, int value, int extent, int min, int max) 创建具有指定方向、值、跨度、最小值和最大值的一个滚动条。value为当前滚动条位于的位置,min和max共同组成了滚动条的范围,extent表示滚动条的跨越的宽度

    常用方法

    * addAdjustmentListener(AdjustmentListener l) 添加一个滚动条调整的事件侦听器,例子如下:

    scrollBar_1.addAdjustmentListener(new AdjustmentListener() {    //添加一个事件侦听器
                @Override
                public void adjustmentValueChanged(AdjustmentEvent e) {
                    scrollBar_1=(JScrollBar)e.getSource();    //获得监听的控件,这里要强制转换成滚动条类型的
                    textField_North.setText(""+scrollBar_1.getValue());    //r如果滚动条移动了,那么就将刻度显示在文本域中
    
                }
            });
    
    • setModel(BoundedRangeModel newModel) 设置处理滚动条的以下四个基本属性的模型:minimum、maximum、value 和 extent。通过这个函数可以将滚动条与其他的控件绑定在一起,下面将会演示一下JTextField绑定滚动条
    //获取文本字段的可见性,如果文本字段大小大于分配给他的大小那么可以对他进行调整
            BoundedRangeModel boundedRangeModel = textField.getHorizontalVisibility();
            //设置处理滚动条的以下四个基本属性的模型:minimum、maximum、value 和 extent。
            scrollBar.setModel(boundedRangeModel);   //通过这个的绑定,就将滚动条和文本域绑定在一起了
    
    
    • setOrientation(int orientation) 将滚动条的方向设置为 VERTICAL 或 HORIZONTAL。
    • setMaximum(int maximum) 设置模型的 maximum 属性。
    • setMinimum(int minimum) 设置模型的 minimum 属性。
    • setValue(int value) 设置当前的值
    • setUnitIncrement(int unitIncrement) 设置 unitIncrement 属性,设置拖曳滚动轴时,滚动轴刻度一次的变化量。
    • setBlockIncrement(int blockIncrement) 设置 blockIncrement 属性, 设置当鼠标在滚动轴列上按一下是,滚动轴一次所跳的区块大小
    • setVisibleAmount(int extent); 设置extent值

    JTextPanel

    可以用以图形方式表示的属性来标记的文本组件,相当于处理文本的工具word文档一样,可以在其中为文本设置不同的属性

    构造函数

    • JTextPane() 创建一个新的 JTextPane。
    • JTextPane(StyledDocument doc) 创建具有指定文档模型的新 JTextPane。

    常用方法

    • setCharacterAttributes(AttributeSet attr, boolean replace) 将给定属性应用于字符内容,这个是将样式应用到文本的函数
    • getStyledDocument() 获取与编辑器关联的模型。

    实例

    package demo;
    
    import javax.swing.*;
    import javax.swing.text.*;
    import java.awt.*;
    
    /**
     * Created by chenjiabing on 17-5-22.
     */
    public class TextPane extends JFrame {
        public TextPane() {
            super();
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setBounds(100, 100, 400, 500);
    
            JTextPane textPane = new JTextPane();
    //        textPane.setBackground(Color.black);
    
    //      textPane.setFont(new Font("微软雅黑",Font.ITALIC,20));
            JScrollPane scrollPane = new JScrollPane(textPane);
            scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
            scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    
            SimpleAttributeSet simpleAttributeSet = new SimpleAttributeSet();  //创建一个属性
            StyleConstants.setForeground(simpleAttributeSet, Color.GREEN);    //设置前景色
            StyleConstants.setBold(simpleAttributeSet, true);    //设置加粗
            StyleConstants.setUnderline(simpleAttributeSet, true);    //设置下划线
            StyleConstants.setFontFamily(simpleAttributeSet, "微软雅黑");   //设置字体
            StyleConstants.setFontSize(simpleAttributeSet, 20);   //设置字体大小
            StyleConstants.setItalic(simpleAttributeSet, true);   //设置倾斜
            StyleConstants.setStrikeThrough(simpleAttributeSet, true);   //设置删除线
            StyleConstants.setFirstLineIndent(simpleAttributeSet, 2.5f);    //设置首行缩进
            StyleConstants.setLineSpacing(simpleAttributeSet, 20);
            StyleConstants.setRightIndent(simpleAttributeSet, 2.4f);
    
    
            textPane.setCharacterAttributes(simpleAttributeSet, true);
    //        Document doc=textPane.getStyledDocument();   //获得关联的文本
    //        try {
    //            doc.insertString(doc.getLength(), "陈加兵", simpleAttributeSet);   //向文本中插入字符串
    //        }catch (BadLocationException e)
    //        {
    //            e.printStackTrace();
    //        }
            this.getContentPane().add(scrollPane, BorderLayout.CENTER);
        }
    
    
        public static void main(String[] args) {
            TextPane text = new TextPane();
            text.setVisible(true);
    
    
        }
    
    
    }
    
    
  • 相关阅读:
    Qt多线程学习:创建多线程
    多线程和多进程的差别(小结)
    CHD4 impala安装配置
    虚拟化之vmware-vcenter
    Java实现第九届蓝桥杯测试次数
    Java实现第九届蓝桥杯测试次数
    Java实现第九届蓝桥杯测试次数
    Java实现第九届蓝桥杯测试次数
    Java实现第九届蓝桥杯复数幂
    Java实现第九届蓝桥杯复数幂
  • 原文地址:https://www.cnblogs.com/Chenjiabing/p/6964480.html
Copyright © 2020-2023  润新知