《Java核心技术I》Swing中滚动窗格
滚动窗格
Swing中文本区没有滚动条,如需要,可以将文本区放在
滚动窗格(scrollpane)中。
textArea = new JTextArea(8,40);
var scrollPane = new JScrollPane(textArea);
添加到滚动窗格不是文本区特有的,所有组件都可以。
注释:JTextArea组件只显示纯文本,如需显示格式化文本,使用JEditorPane类。
类似于H5中的文本区和富文本框。
展示各种文本组件案例
package swing;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
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;
public class TextComponentFrame {
public static void main(String[] args) {
JFrame frame = new JFrame("展示各种文本组件");
JPanel northPanel = new JPanel();
var textField = new JTextField();
var passwordField = new JPasswordField();
northPanel.setLayout(new GridLayout(2, 2));
northPanel.add(new JLabel("用户名:",JLabel.RIGHT));
northPanel.add(textField);
northPanel.add(new JLabel("密码:",JLabel.RIGHT));
northPanel.add(passwordField);
frame.add(northPanel,BorderLayout.NORTH);
var textArea = new JTextArea(8, 20);
var scrollPane = new JScrollPane(textArea);
frame.add(scrollPane,BorderLayout.CENTER);
var southPanel = new JPanel();
var insertButton = new JButton("插入");
southPanel.add(insertButton);
insertButton.addActionListener(e -> {
textArea.append("用户名:"+textField.getText()+" 密码:"
+new String(passwordField.getPassword())+"\n");
});
frame.add(southPanel,BorderLayout.SOUTH);
frame.setSize(400, 400);
//初始打开为屏幕中央
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
int screenWidth = (int) screenSize.getWidth();
int screenHeight = (int) screenSize.getHeight();
//计算窗口位置
int x = (screenWidth - frame.getWidth())/2;
int y = (screenHeight - frame.getHeight())/2;
frame.setLocation(x, y);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
javax.swing.JtextArea 1.2
- JTextArea()
- JTextArea(int rows,int cols)
- JTextArea(String text,int rows,int cols),构造一个新文本。
- void setColumns(int cols),设置文本区应该使用的首选列数。
- void setRows(int rows),设置文本区应该使用的首选行数
- void append(String newText),将给定的文本追加到文本区中已有文本的末尾。
- void setLineWrap(boolean wrap),打开或关闭换行
- void setWrapStyleWord(boolean word),换行
- void setTabSize(int c),将制表符设置为c列,注意制表符不会转化为空格,但可以让文本对齐到下一个制表符处。
javax.swing.JScrollPane 1.2
- JScrollPane(Component c),创建一个滚动窗格,显示指定组件内容,组件超过显示范围时,滚动条自动出现。