javaGUI学习52:Swing-选取器

1、JFileChooser

文件选取器(与选项窗格一样)是放置在对话框中的轻量组件。一旦创建了一个JFileChooser实例,就可以把这个实例添加到一个对话框中。而且,JFileChooser类还提供了一些方法,这些方法把已存在的文件添加到一个模态对话框中,并且显示这个对话框。这些方法返回一个integer值,指出是激活了选取器的批准按钮还是清除了这个对话框。

文件选取器支持三种显示模式:只显示文件、只显示目录、和显示文件及目录。另外,文件选取器还支持单文件选取和多文件选取О

可以用许多不同的方法来定制文件选取器。

1.1 文件选取类型

JFileChooser类支持三种类型的预配置文件选取器和与它们相关联的对话框,这三种文件选取器的对话框是:定制文件选取器对话框、打开文件选取器对话框、和保存文件选取器对话框,这些对话框的区别是对话框的标题和文件选取器批准按钮上所使用的文本。

1.2 可访问组件

文件选取器可以容纳一个可访问组件,如图16-4所示。可访问组件放在文件列表区O的右边,而且其高度与文件列表区的高度相同,其宽度与可访问组件的首选宽度相同。可访问组件有许多用途,最常见的用途是作为一个预览器,当在文件选取器中选取了文件时,预览器就显示这个文件的内容。

1.3 过滤文件类型

用一个文件过滤器可以把满足某种标准的文件(如以.gif结尾的文件)过滤出来。任何类型的过滤器都可以与单个文件选取器相关联,但是,在给定的时刻只可以激活一个过滤器。
缺省情况下,文件选取器只使用一个acceptall(接受所有的文件)过滤器,如这个过滤器的名字所指出的,这个过滤器接受所有的文件。通过调用JFileChooser . setFileFilter ()(它替换当前的过滤器)可以用定制的过滤器来替代缺省的过滤器。
通过扩展抽象swing.filechooser. FileFilter类来实现文件过滤器。

1.4 文件视图

文件选取器获得图标和文件名,它们显示在一个对象中,这个对象是抽象swing. filechooser. FileView类的一个扩展。缺省文件视图由BasicFileChooserUI. BasicFileView类实现,但是,如果用JFileChooser.setFileView方法显式地设置一个文件视图,则这个文件视图可以完全地或部分地替代缺省文件视图。
如果文件选取器显式地配备了一个从它的任何方法中都返回null的文件视图,则向缺省文.件视图询问信息。例如,如果文件选取器有一个文件视图(它从getName方法中返回null),则从BasicFileView的一个实例中获得名字。因此,缺省文件视图的行为可以部分地被重载。

1.5 多文件选取

JFileChooser的实例允许选取多个文件,然而,对Swing 1.1 FCS而言,虽然可以在一个文件选取器中选取多个文件,但是不能访问所选取的文件。

1.6 JFileChooser属性,事件
2、JColorChooser

JColorChooser类代表的颜色选取器是允许选取–种颜色的组件。颜色选取器由两个单独的区域组成,这两个区域是:一组在标签窗格中显示的颜色选取器面板和一个预览面板。预览面板显示所选取的颜色,通过替换缺省面板可以定制这两个区域。
与文件选取器和选项窗格一样,通常在一个对话框中显示颜色选取器,然而,因为颜色选取器是组件,所以它们可以包含在任何AWT或Swing容器中。

2.1 在对话框中显示颜色选取器

可以用两种方法中的一种方法在一个对话框中显示颜色选取器。每当调用static JColorChooser . showDialog 方法时,这个方法都创建一个颜色选取器,并把这个颜色选取器放在新创建的对话框中。
每当调用JColorChooser .createDialog方法时,这个方法都带人一个已存在的颜色选取器,这个颜色选取器也被放在新创建的对话框中。

2.2 定制颜色选取器

缺省情况下,颜色选取器有三个颜色选取器面板(都包含在一个标签窗格中)和一个预览面板。虽然缺省颜色选取器面板和预览面板是最常用的颜色选取器,但是颜色选取器面板和预览面板可以用定制的版本来替换。

2.3 JColorChooser属性,事件
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于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计算

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值