JavaGUI编程三 面板组件 文本组件

阅读原文 链接

面板组件

Swing组件中提供了一些面板组件(中间容器),这些面板组件不能单独存在,只能放置在顶级窗口容器中。
常见的组件
JPanel:JPanel面板组件时一个无边框不能被移动、放大、缩小或者关闭的面板,它的默认布局管理器时FlowLayout
JScrollPane:JScrollPane是一个带有滚动条的面板容器,且只能添加一个组件;想向JScrollPane面板中添加多个组件,应先将这多个组件添加到某个组件中,然后再将这个组件添加到JScrollPane中。
常用构造方法:
JScrollPane():创建一个空的JScrollPane面板
JScollPane(Component view):创建一个显示指定组件的JScrollPane面板,只要组件的内容超过视图大小就会显示水平和垂直滚动条。
JScrollPane(Component view,int vsbPolicy,int hsbPolicy):创建一个显示指定容器、并且具有指定滚动条策略的JScrollPane。参数vsbPolicy和hsbPolicy分别表示垂直滚动条策略和水平滚动条策略。
说明:第三个构造方法是再第二个构造方法的基础上指定滚动条策略。如果再构造方法中没用指定显示组件和滚动条策略,也可以使用JScrollPane提供的方法进行设置。

JScrollPane设置面板滚动策略的方法
void setHorizontalBarPolicy(int policy):指定水平滚动条策略,即水平滚动条何时显示在滚动面板上
void setVericalBarPolicy(int policy):指定垂直滚动条策略,即垂直滚动条何时显示在面板上
void setViewportView(Component view):设置在滚动面板显示的组件。
说明:上述方法是JScrollPane滚动面板组件对象提供的设置滚动策略的方法。滚动策略方法取值可以使用ScrollPaneConstants接口中声明了多个常量属性来进行设置。

JScrollPane滚动策略常量值
VERTICAL_SCROLLBAR_AS_NEEDED
HORIZONTAL_SCROLLBAR_AS_NEEDED
当填充的组件视图超过客户端窗口大小时,自动显示水平和竖直放行滚动条(JscrollPane组件 的默认值)
VERTICAL_SCROLLBAR_ALWAYS
HORIZONTAL_SCROLLBAR_ALWAYS
无论填充的组件视图大小,始终显示水平和竖直放行滚动条
VERTICAL_ SCROLLBAR_ NEVER
HORIZONTAL_SCROLLBAR_NEVER
无论填充的组件视图大小,始终不显示水平和竖直放行滚动条

样例代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class javagui {
    public static void main(String[] args) {
        //线程
        SwingUtilities.invokeLater(() -> method());
    }

    private static void method() {
        //创建主窗体
        JFrame jf = new JFrame("窗体");
        jf.setBounds(100,200,300,400);//可以用这一个方法设定窗口的位置和大小,前两个参数为位置坐标x,y后两个参数为宽和高

        //创建带有滚动条的空面板
        JScrollPane jScrollPane = new JScrollPane();

        //设置水平滚动条策略,当组件超过了窗体大小,显示滚动条
        jScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);

        //设置水平滚动条策略,设置滚动条一直存在
        jScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

        //创建JPanel,存储多个组件
        JPanel panel = new JPanel();
        panel.add(new JButton("按钮1"));
        panel.add(new JButton("按钮2"));
        panel.add(new JButton("按钮3"));
        panel.add(new JButton("按钮4"));

        //将组织好的一个panel组件,整个添加到带有滚动条的面板中
        jScrollPane.setViewportView(panel);

        jf.add(jScrollPane,BorderLayout.CENTER);

        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);
    }

}

效果图:

JavaGUI编程三 面板组件 文本组件_第1张图片

文本组件

文本组件用于接收用户输入的信息,包括文本框(JTextField,接收一行数据)、文本域(JTextArea,接收多行数据)等。
他们都有一个共同的父类JTextCompaonent,JtextComponent是一个抽象类。

常用方法
String String getText():返回文本组件中所有的文本内容
String getSelectedText():返回文本组件中选定的文本内容
void selectAll():在文本组件中选中所有的内容
void setEditable():设置文本组件为可编辑或者不可编辑状态
void setText(String text):设置文本组件内容
void replaceSelection(String content):用给定的内容替换当前选定的内容

JTextField:

JTextField成为文本框,它只能接收单行文本的输入。
常用构造方法:
JTextField():创建一个空的文本框,初始字符串为null
JTextField(int columns):创建一个具有指定列数的文本框,初始字符串为null
JTextField(String text):创建一个显示指定初始字符串的文本框
JTextField(String text,int column):创建一个具有指定列数、并显示指定初始字符串的文本框
说明:
JTextField右一个子类JPasswordField,表示一个单行输入密码框。在此框中是通过显示指定的回显字符作为占位符。新创建的密码框默认的回显字符为*。

JTextArea:

JTextArea称为文本域,它能接收多行文本的输入,使用JTextArea构造方法创建对象时可以设定区域的行数、列数
常用构造方法:
JTextArea():构造方法,创建一个空的文 本域
JTextArea(String text):构造方法,创建显示指定初始字符串的文本域
JTextArea(int rows,int columns):构造方法,创建具有指定行和列的空的文本域
JTextArea(String text, int rows,int columns):构造 方法,创建显示指定初始文本并指定了行列的文本域

样例代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class javagui {
    public static void main(String[] args) {
        //线程
        SwingUtilities.invokeLater(() -> method());
    }

    private static void method() {
        //创建主窗体
        JFrame jf = new JFrame("简单聊天窗体");
        jf.setBounds(100,200,300,300);//可以用这一个方法设定窗口的位置和大小,前两个参数为位置坐标x,y后两个参数为宽和高

        //设置布局为边界布局
        jf.setLayout(new BorderLayout());

        //创建聊天记录的JTextArea
        JTextArea showArea = new JTextArea(12,25);//12行34列,可根据情况自由调整
        showArea.setEnabled(false);//设置聊天展示窗口不可编辑

        //创建滚动条面板组件
        JScrollPane jScrollPane = new JScrollPane(showArea);
        jf.add(jScrollPane,BorderLayout.PAGE_START);//添加到Frame

        //创建文本输入框JTextField
        JTextField text = new JTextField(10);

        //创建发送按钮
        JButton btn = new JButton("发送");

        //为按钮注册监听事件
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //获取文本框中的数据
                String content = text.getText();
                if (content != null && content.length() != 0){//判断输入框内是否有内容,如果有内容才进行添加
                    showArea.append("输入的信息为:"+content+"\r\n");
                }else {
                    showArea.append("发送内容为空\r\n");
                }
                text.setText("");//将发送窗口置空
            }
        });

        //创建提示标签
        JLabel label = new JLabel("聊天信息");

        JPanel panel = new JPanel();
        panel.add(label);
        panel.add(text);
        panel.add(btn);

        jf.add(panel,BorderLayout.PAGE_END);

        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);
    }

}

效果截图:

JavaGUI编程三 面板组件 文本组件_第2张图片

 

你可能感兴趣的:(Java)