javaGUI学习58:Swing-文本组件

Swing 提供两种完全不同的文本组件类型:简单文本控件和风格文本组件。简单文本控件一次只能显示一种字体和-一种颜色,而风格文本组件则可以显示多种字体和颜色。前者有单行文本域(JTextField)、l7令域(JPasswordField)和多行文本域(JTextArea),后者有编辑器窗格(JEditor-Pane)和文本窗格(JTextPane)。

单行文本域和多行文本域编辑纯文本是很有用的。JTextField和JTextArea与它们的AWT对等组件( java. awt. TextField和 java.awt.TextArea)在源代码上几乎是完全兼容的。

用编辑窗格和文本窗格可编辑不同风格文本来显示不同内容。JTextPane类为在文本窗格中显示的内容提供了设置字符和段落属性的方法。文本窗格还能够嵌入组件和图标。JEditorPane和JTextPane没有AWT对等组件。

1、JTextField

JTextField组件显示单行可编辑文本,它只使用一种字体和-种颜色,可以为单行文本域的文本指定水平排列方式(LEFT、CENTER或RIGHT)。

缺省情况下,当单行文本域有焦点时按下Enter键(KeyEvent. VK_ENTER)将引起这个文本域澈发-个动作事件。这种行为与AWT的单行文本域兼容,但与Swing 的缺省按钮不一致(Swing的缺省按钮在按下Enter键时也被激活)。

通过指定单行文本域想要显示的列数可以设置单行文本域的首选宽度。单行文本域的实际宽度通常由布局管理器来设置,因此设置单行文本域的列数并不保证它的实际宽度。

1.1 水平可视性和滚动偏移

JTextField维护一个代表单行文本域水平可视性( horizontal visibility)的范围限定模型。范围限定模型包含有以下属性.: value , minimum , maximum , extent。对单行文本域而言,这个域的可视性value值代表在这个域中显示的文本的滚动偏移。

1.2 布局单行文本域

Swing的单行文本域组件比较简单,易于使用,但很难正确地设置它们的尺寸和位置。本节给出了一个利用复杂的GridBaglayout布局管理器的简单例子。

1.3 使单行文本域有效

单行文本域通常要使输入的数据有效;

2、JPasswordField

Swing的口令域把输人到这个域的字符隐藏起来并显示“* ”。可以在创建口令域之后设置星号为回显字符。

3、JTextArea

Swing的多行文本域(由类JTextArea表示)可以显示多行纯文本,多行文本域被定义为具有一种字体和一种颜色的文本。多行文本域可以在字符或字边界处换行。JTextArea类与java . awt . TextArea类在源代码上几乎是兼容的。

4、JEditorPane

编辑器窗格不仅能够显示多行文本还能够显示不同类型的内容。缺省情况下,编辑器窗格可以显示纯文本、HTML和 RTF文本。编辑器窗格是JEditorPane类的实例,JEditorPane类是JTextComponent 的一个直接扩展。

5、JTextPane

文本窗格(JTextPane类的实例)是Swing文本组件的卡迪拉克。JTextPane扩展JEditorPane,因此,文本窗格继承了显示不同内容类型的能力。JTextPane还增加了两个有意义的功能:嵌入图标和组件并标记具有属性的内容。

5.1 嵌入图标和组件

JTextPane类提供两种插入图标和组件的方法 : insertComponent( Component )和 in-sertIcon( lcon )。

5.2 用属性标记内容

文本窗格有带风格的编辑器工具包,它提供一组设置常用属性的动作,这些属性如黑体、斜体.下划线.删除线等。StyledEditorKit包含一个缺省动作数组,这个数组被添加到来自StyledEdilorKit的超类的动作中。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于Java GUI编程实现计算器,你可以使用Swing和AWT这两种Java GUI工具包之一。 以下是一个简单的Java GUI计算器的实现示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculator extends JFrame implements ActionListener { private JButton[] numberButtons; private JButton[] operatorButtons; private JButton clearButton, equalsButton, decimalButton; private JTextField textField; private double num1 = 0, num2 = 0, result = 0; private char operator; public Calculator() { setTitle("Calculator"); // Create the number buttons numberButtons = new JButton[10]; for (int i = 0; i < 10; i++) { numberButtons[i] = new JButton(String.valueOf(i)); } // Create the operator buttons operatorButtons = new JButton[4]; operatorButtons[0] = new JButton("+"); operatorButtons[1] = new JButton("-"); operatorButtons[2] = new JButton("*"); operatorButtons[3] = new JButton("/"); // Create the clear, equals, and decimal buttons clearButton = new JButton("C"); equalsButton = new JButton("="); decimalButton = new JButton("."); // Create the text field textField = new JTextField(10); textField.setEditable(false); // Set the layout manager and add the components setLayout(new GridBagLayout()); GridBagConstraints gc = new GridBagConstraints(); gc.gridx = 0; gc.gridy = 0; gc.gridwidth = 4; add(textField, gc); gc.gridwidth = 1; gc.gridy = 1; for (int i = 0; i < 10; i++) { gc.gridx = i % 3; gc.gridy = i / 3 + 2; add(numberButtons[i], gc); numberButtons[i].addActionListener(this); } gc.gridx = 0; gc.gridy = 5; add(operatorButtons[0], gc); operatorButtons[0].addActionListener(this); gc.gridx = 1; add(operatorButtons[1], gc); operatorButtons[1].addActionListener(this); gc.gridx = 2; add(operatorButtons[2], gc); operatorButtons[2].addActionListener(this); gc.gridx = 3; add(operatorButtons[3], gc); operatorButtons[3].addActionListener(this); gc.gridx = 0; gc.gridy = 6; add(clearButton, gc); clearButton.addActionListener(this); gc.gridx = 1; add(equalsButton, gc); equalsButton.addActionListener(this); gc.gridx = 2; add(decimalButton, gc); decimalButton.addActionListener(this); setSize(200, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void actionPerformed(ActionEvent e) { for (int i = 0; i < 10; i++) { if (e.getSource() == numberButtons[i]) { textField.setText(textField.getText() + i); } } if (e.getSource() == decimalButton) { textField.setText(textField.getText() + "."); } if (e.getSource() == clearButton) { textField.setText(""); num1 = 0; num2 = 0; result = 0; operator = ' '; } if (e.getSource() == operatorButtons[0]) { num1 = Double.parseDouble(textField.getText()); operator = '+'; textField.setText(""); } if (e.getSource() == operatorButtons[1]) { num1 = Double.parseDouble(textField.getText()); operator = '-'; textField.setText(""); } if (e.getSource() == operatorButtons[2]) { num1 = Double.parseDouble(textField.getText()); operator = '*'; textField.setText(""); } if (e.getSource() == operatorButtons[3]) { num1 = Double.parseDouble(textField.getText()); operator = '/'; textField.setText(""); } if (e.getSource() == equalsButton) { num2 = Double.parseDouble(textField.getText()); switch (operator) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': result = num1 / num2; break; } textField.setText(Double.toString(result)); } } public static void main(String[] args) { new Calculator(); } } ``` 这个示例应该可以实现一个简单的Java GUI计算器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值