如何在Java Swing中显示系统样式的文件选择框?类似JavaFX的FileChooser外观

如何在Java Swing中显示系统样式的文件选择框?类似JavaFX的FileChooser外观,第1张

完整的java代码如下:

import javax.swing.*

import java.awt.event.*

public class FileChooserDemo extends JFrame implements ActionListener {

// 创建一个按钮,用于打开文件选择框

private JButton openButton

// 创建一个文件选择框对象

private JFileChooser fileChooser

public FileChooserDemo() {

// 设置窗口标题和大小

super("文件选择框示例")

setSize(300, 200)

// 设置窗口布局为流式布局

setLayout(new FlowLayout())

// 初始化按钮,并添加动作监听器

openButton = new JButton("打开文件")

openButton.addActionListener(this)

// 初始化文件选择框,并设置为系统样式[^1^][2]

fileChooser = new JFileChooser()

fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY)

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())

SwingUtilities.updateComponentTreeUI(fileChooser)

} catch (Exception e) {

e.printStackTrace()

}

// 将按钮添加到窗口中

add(openButton)

// 设置窗口可见和关闭 *** 作

setVisible(true)

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

}

@Override

public void actionPerformed(ActionEvent e) {

if (e.getSource() == openButton) {

// 当点击打开文件按钮时,d出文件选择框[^2^][1]

int result = fileChooser.showOpenDialog(this)

if (result == JFileChooser.APPROVE_OPTION) {

// 当用户选择了一个文件时,获取并显示文件路径

String filePath = fileChooser.getSelectedFile().getPath()

JOptionPane.showMessageDialog(this, "你选择了:" + filePath)

}

}

}

public static void main(String[] args) {

new FileChooserDemo()

}

}

java.awt

类 List

java.lang.Object

java.awt.Component

java.awt.List

所有已实现的接口:

ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible

--------------------------------------------------------------------------------

public class Listextends Componentimplements ItemSelectable, AccessibleList 组件为用户提供了一个可滚动的文本项列表。可设置此 list,使其允许用户进行单项或多项选择。

例如以下代码:

--------------------------------------------------------------------------------

List lst = new List(4, false)

lst.add("Mercury")

lst.add("Venus")

lst.add("Earth")

lst.add("JavaSoft")

lst.add("Mars")

lst.add("Jupiter")

lst.add("Saturn")

lst.add("Uranus")

lst.add("Neptune")

lst.add("Pluto")

cnt.add(lst)

--------------------------------------------------------------------------------

当 cnt 为容器时,将生成以下滚动列表:

如果 List 允许进行多项选择,则单击已选中的项时,将取消选中该项。在上面的示例中,一次只能从滚动列表中选择一项,因为创建新的滚动列表时,第二个参数为 false。如果 List 不允许进行多项选择,则选择某一项会导致其他选中的项取消选中。

注意,本示例中显示的列表是用四个可视行创建的。创建该列表之后,不可更改可视行的数量。默认的 List 是用四行创建的,所以 lst = new List() 与 list = new List(4, false) 等效。

从 Java 1.1 开始,AWT(Abstract Window Toolkit,抽象窗口工具包)会把列表上发生的所有鼠标、键盘和焦点事件发送给 List 对象。(维护旧的 AWT 事件模型的目的是为了向后兼容,不推荐使用它。)

当用户选中或取消选中某项时,AWT 将向列表发送一个 ItemEvent 实例。当用户双击滚动列表中的某一项时,AWT 会在紧随项事件后向列表发送一个 ActionEvent 实例。当用户选中列表中的某项,按下 return 键时,AWT 也会生成一个动作事件。

如果应用程序需要基于此列表中用户选中或激活的项执行某个动作,则应该相应地实现 ItemListener 或 ActionListener,并注册新的侦听器,以便在此列表中接收事件。

对于多项选择滚动列表,使用外部动作(如单击按钮)来触发动作被认为是一种更好的用户界面。

从以下版本开始:

JDK1.0

另请参见:

ItemEvent, ItemListener, ActionEvent, ActionListener, 序列化表格

--------------------------------------------------------------------------------

嵌套类摘要

protected class List.AccessibleAWTList

此类实现 List 类的可访问性支持。

从类 java.awt.Component 继承的嵌套类/接口

Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy

字段摘要

从类 java.awt.Component 继承的字段

BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT

从接口 java.awt.image.ImageObserver 继承的字段

ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH

构造方法摘要

List()

创建新的滚动列表。

List(int rows)

创建一个用指定可视行数初始化的新滚动列表。

List(int rows, boolean multipleMode)

创建一个初始化为显示指定行数的新滚动列表。

方法摘要

void add(String item)

向滚动列表的末尾添加指定的项。

void add(String item, int index)

向滚动列表中索引指示的位置添加指定的项。

void addActionListener(ActionListener l)

添加指定的动作侦听器以从此列表接收动作事件。

void addItem(String item)

已过时。 由 add(String) 取代。

void addItem(String item, int index)

已过时。 由 add(String, int) 取代。

void addItemListener(ItemListener l)

添加指定的项侦听器以接收此列表的项事件。

void addNotify()

创建列表的同位体。

boolean allowsMultipleSelections()

已过时。 从 JDK version 1.1 开始,由 isMultipleMode() 取代。

void clear()

已过时。 从 JDK version 1.1 开始,由 removeAll() 取代。

int countItems()

已过时。 从 JDK version 1.1 开始,由 getItemCount() 取代。

void delItem(int position)

已过时。 由 remove(String) 和 remove(int) 取代。

void delItems(int start, int end)

已过时。 从 JDK version 1.1 开始,后来不再公开使用。只希望作为包私有方法时保留此方法。

void deselect(int index)

取消选择指定索引处的项。

AccessibleContext getAccessibleContext()

获取与此 List 关联的 AccessibleContext。

ActionListener[] getActionListeners()

返回已在此列表上注册的所有动作侦听器的数组。

String getItem(int index)

获取与指定索引关联的项。

int getItemCount()

获取列表中的项数。

ItemListener[] getItemListeners()

返回已在此列表上注册的所有项侦听器的数组。

String[] getItems()

获取列表中的项。

<T extends EventListener>

T[]

getListeners(Class<T>listenerType)

返回目前已在此 List 上注册为 FooListener 的所有对象的数组。

Dimension getMinimumSize()

确定此滚动列表的最小大小。

Dimension getMinimumSize(int rows)

获取具有指定行数的列表的最少维数。

Dimension getPreferredSize()

获取此滚动列表的首选大小。

Dimension getPreferredSize(int rows)

获取具有指定行数的列表的首选维数。

int getRows()

获取此列表中的可视行数。

int getSelectedIndex()

获取列表中选中项的索引。

int[] getSelectedIndexes()

获取列表中选中的索引。

String getSelectedItem()

获取此滚动列表中选中的项。

String[] getSelectedItems()

获取此滚动列表中选中的项。

Object[] getSelectedObjects()

获取对象数组中此滚动列表的选中项。

int getVisibleIndex()

获取上次由 makeVisible 方法使其可视的项的索引。

boolean isIndexSelected(int index)

确定是否已选中此滚动列表中的指定项。

boolean isMultipleMode()

确定此列表是否允许进行多项选择。

boolean isSelected(int index)

已过时。 从 JDK version 1.1 开始,由 isIndexSelected(int) 取代。

void makeVisible(int index)

使指定索引处的项可视。

Dimension minimumSize()

已过时。 从 JDK version 1.1 开始,由 getMinimumSize() 取代。

Dimension minimumSize(int rows)

已过时。 从 JDK version 1.1 开始,由 getMinimumSize(int) 取代。

protected String paramString()

返回表示此滚动列表状态的参数字符串。

Dimension preferredSize()

已过时。 从 JDK version 1.1 开始,由 getPreferredSize() 取代。

Dimension preferredSize(int rows)

已过时。 从 JDK version 1.1 开始,由 getPreferredSize(int) 取代。

protected void processActionEvent(ActionEvent e)

处理发生在此列表上的动作事件,方法是将这些事件指派给所有已注册的 ActionListener 对象。

protected void processEvent(AWTEvent e)

此滚动列表的进程事件。

protected void processItemEvent(ItemEvent e)

处理发生在此列表上的项事件,方法是将这些事件指派给所有已注册的 ItemListener 对象。

void remove(int position)

从此滚动列表中移除指定位置处的项。

void remove(String item)

从列表中移除项的第一次出现。

void removeActionListener(ActionListener l)

移除指定的动作侦听器,以便不再从此列表接收动作事件。

void removeAll()

从此列表中移除所有项。

void removeItemListener(ItemListener l)

移除指定的项侦听器,以便不再从此列表接收项事件。

void removeNotify()

移除此列表的同位体。

void replaceItem(String newValue, int index)

使用新字符串替换滚动列表中指定索引处的项。

void select(int index)

选择滚动列表中指定索引处的项。

void setMultipleMode(boolean b)

设置确定此列表是否允许进行多项选择的标志。

void setMultipleSelections(boolean b)

已过时。 从 JDK version 1.1 开始,由 setMultipleMode(boolean) 取代。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11942467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存