• Swing-文本输入组件(一)


    Swing控件中,能够实现用户输入的有JTextField、JPasswordField、JTextArea和JTextPane。下面分别进行介绍。

    JTextField

    最简单的文本控件,常见的登陆界面中就是使用得它。其文本无法换行,也不支持滚动条,文本长度超出控件宽度后在视觉上会遮挡一部分内容,因此建议提前预计文本长度,并使用textField.setColumns(int arg0)将其列数设置的稍大一点。之后,必须调用revalidate()重新计算控件大小。

    基本方法:

     

    JPasswordField

    性质与JTextField基本相同,区别在于输入内容非明文。可使用setEchoChar(char arg0)设置回显字符,默认为星号。

    基本方法:

    JTextArea

    较大面积的输入区域,比如记事本、word的编辑区域。其中的内容可包含多行,每一行内容使用 进行分割。该控件常常需要使用滚动条,然而默认是没有的,必须手动添加。

    基本方法:

    基本的setText()/getText()之类函数不在重复,给出下面这个:

    public void setLineWrap(boolean wrap)

    该方法设置为true时,允许文本宽度超过控件宽度时自动进行换行。否则超过部分将被遮挡。

    JTextPane

    文本组件中的高富帅。它可以容纳格式化文字、图片、任意组件及段落格式等。我们将专门使用一节来介绍它。详见《Swing-文本输入组件(二)》

    示例代码:

    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.SwingConstants;
    
    /*
     * source code from 《java核心技术 卷1 基础知识》 P323
     */
    public class TextComponentFrame extends JFrame {
    
        int DEFAULT_WIDTH = 600;
        int DEFAULT_HEIGHT = 400;
    
        public TextComponentFrame() {
            setTitle("TextComponentFrame");
            setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
            
            //本frame包含三大板块
            JPanel northPanel = new JPanel();        
            JScrollPane scrollPane = null;
            JPanel southPanel = new JPanel();
            add(northPanel, BorderLayout.NORTH);
            add(southPanel, BorderLayout.SOUTH);
            
            //先来构造northPanel,它包含两个控件        
            final JTextField textField = new JTextField();
            final JPasswordField passwordField = new JPasswordField();
            
            northPanel.setLayout(new GridLayout(2, 2));
            northPanel.add(new JLabel("UserName:", SwingConstants.RIGHT));//靠右对齐
            northPanel.add(textField);
            northPanel.add(new JLabel("Password:", SwingConstants.RIGHT));//靠右对齐
            northPanel.add(passwordField);
    
            //再来构造中间板块,它包含一个textArea
            final JTextArea textArea = new JTextArea();
            scrollPane = new JScrollPane(textArea);
            add(scrollPane, BorderLayout.CENTER);//添加到窗体
    
            //构造southPanel,它包含一个button        
            southPanel.setLayout(new GridLayout(2, 2));
            JButton insertButton = new JButton("insertButton");
            insertButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    // TODO Auto-generated method stub
                    textArea.append("UserName: " + textField.getText() + "
    "
                            + "Password:" + new String(passwordField.getPassword())
                            + "
    ");
                }
            });
            southPanel.add(insertButton);
        }
    
        public static void main(String[] args) {
            //创建窗体并指定标题
            TextComponentFrame frame = new TextComponentFrame();
            //关闭窗体后退出程序
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //自动适配所有控件大小
            //frame.pack();
            //设置窗体位置在屏幕中央
            frame.setLocationRelativeTo(null);
            //显示窗体
            frame.setVisible(true);
        }
    }

    运行效果:

  • 相关阅读:
    uva11916 Emoogle Grid (BSGS)
    2016vijos 1-2 股神小L(堆)
    bzoj千题计划311:bzoj5017: [Snoi2017]炸弹(线段树优化tarjan构图)
    Oracle Profile 使用详解--zhuanzai
    通过srvctl add命令添加database信息到srvctl管理器-转
    Oracle Dataguard Standby Redo Log的两个实验
    MySQL数据的主从复制、半同步复制和主主复制详解-转
    解决oralce 11g dg搭建报错:ORA-16664、ORA-16714、ORA-16810问题--转
    oracle分布式事务总结-转载
    日志挖掘Logmnr
  • 原文地址:https://www.cnblogs.com/pzy4447/p/4637604.html
Copyright © 2020-2023  润新知