文本框
JTextField,文本框。JTextField 用来编辑单行的文本。
JPasswordField,密码框。JPasswordField 继承自 JTextField,只是显示输入的内容时用特定的字符替换显示(例如 * 或 ),用法和 JTextField 基本一致。
JTextArea,文本区域。JTextArea 用来编辑多行的文本。JTextArea 除了允许多行编辑外,其他基本用法和 JTextField 基本一致。
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,进度条。以可视化形式显示某些任务进度的组件,进度条中心可显示进度百分比的文本表示形式。一个任务的进度长度未知时,可将进度条设置为不确定模式。不确定模式的进度条持续地显示动画来表示正进行的操作。当可以确定任务长度和进度量时,则可设置进度条的最大最小值,以及更新进度条的进度值,将其切换回确定模式。
JSlider,滑块。以图形方式在有界区间内通过移动滑块来选择值的组件。滑块可以显示主刻度标记以及主刻度之间的次刻度标记。刻度标记之间的值的个数由 setMajorTickSpacing(int) 和 setMinorTickSpacing(int) 来控制。刻度标记的绘制由 setPaintTicks(boolean) 控制。滑块也可以在固定时间间隔(或在任意位置)沿滑块刻度打印文本标签。标签的绘制由 setLabelTable(Dictionary) 和 setPaintLabels(boolean) 控制。
PS: 当滑块获得焦点后,按键盘上的 上下左右键 也可以滑动滑块。
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);
// 省略公共代码
}
}