import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JButton;
import javax.swing.DefaultListModel;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class JListTest extends JFrame {
/**
* serialVersionUID:TODO(描述变量的功能)
*
* @since Ver 1.1
*/
private static final long serialVersionUID = 1L;
JPanel contentPane;
String str;
DefaultListModel dlm = new DefaultListModel();
DefaultListModel dlm1 = new DefaultListModel();
JLabel lblMsg1 = new JLabel();
JLabel lblMsg2 = new JLabel();
JList listNo1 = new JList(dlm);
JList listNo2 = new JList(dlm1);
JButton btnInsert = new JButton();
JButton btnInsertAll = new JButton();
JButton btnDelete = new JButton();
JButton btnRemoveAll = new JButton();
public static void main(String args[]) {
new JListTest();
}
public JListTest() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
this.setVisible(true);
this.show();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
setSize(new Dimension(544, 378));
setTitle("Frame Title");
lblMsg1.setText("第一个列表");
lblMsg1.setBounds(new Rectangle(20, 40, 135, 37));
lblMsg2.setText("第二个列表");
lblMsg2.setBounds(new Rectangle(269, 41, 232, 35));
listNo1.setBounds(new Rectangle(11, 76, 167, 248));
listNo1.addMouseListener(new Frame1_listNo1_mouseAdapter(this));
listNo2.setBounds(new Rectangle(306, 76, 197, 250));
listNo2.addMouseListener(new Frame1_listNo2_mouseAdapter(this));
btnInsert.setBounds(new Rectangle(188, 89, 111, 37));
btnInsert.setText("增加>");
btnInsert.addActionListener(new Frame1_btnInsert_actionAdapter(this));
btnInsertAll.setBounds(new Rectangle(188, 141, 112, 39));
btnInsertAll.setText("增加>>");
btnInsertAll.addActionListener(new Frame1_btnInsertAll_actionAdapter(this));
btnDelete.setBounds(new Rectangle(187, 219, 115, 40));
btnDelete.setText("<删除");
btnDelete.addActionListener(new Frame1_btnDelete_actionAdapter(this));
btnRemoveAll.setBounds(new Rectangle(189, 276, 114, 41));
btnRemoveAll.setText("<<删除");
btnRemoveAll.addActionListener(new Frame1_btnRemoveAll_actionAdapter(this));
dlm.addElement("数学");
dlm.addElement("语文");
dlm.addElement("英语");
dlm.addElement("地理");
dlm.addElement("000003/A;1-test3");
dlm.addElement("000002/A;1-test2(view)");
dlm.addElement("000004/A;1-test4");
contentPane.add(lblMsg1);
contentPane.add(lblMsg2);
contentPane.add(listNo1);
contentPane.add(listNo2);
contentPane.add(btnInsert);
contentPane.add(btnInsertAll);
contentPane.add(btnDelete);
contentPane.add(btnRemoveAll);
}
public void listNo1_mouseClicked(MouseEvent e) {
str = (String) listNo1.getSelectedValue();// 获得用户选中的那个值
}
public void btnInsert_actionPerformed(ActionEvent e) {
dlm1.addElement(str);// 将用户选中的值添加到第二个列表中
dlm.removeElement(str);
}
public void btnInsertAll_actionPerformed(ActionEvent e) {
for (int i = 0; i < listNo1.getModel().getSize(); i++) {// 得到第一个列表所有的值
dlm1.addElement(listNo1.getModel().getElementAt(i));// 将第一个列表添加到第二个列表中
}
}
public void btnDelete_actionPerformed(ActionEvent e) {
dlm1.removeElement(str);// 删除第二个列表中用户选中的值
dlm.addElement(str);
}
public void listNo2_mouseClicked(MouseEvent e) {
str = (String) listNo2.getSelectedValue();// 得到第二个列表中用户选中的值
}
public void btnRemoveAll_actionPerformed(ActionEvent e) {
dlm1.removeAllElements();
}
//这个是用来实现复制功能的。
public void getsyscopy(MouseEvent e) {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Object[] temp = listNo2.getSelectedValues();
StringBuffer sb = new StringBuffer();
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
for (int i = 0; i < temp.length; i++) {
sb.append(temp[i]);
sb.append("\n");
}
StringSelection text = new StringSelection(sb.toString());
clipboard.setContents(text, null);
}
public void pastCopy(MouseEvent e) {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(this);
DataFlavor flavor = DataFlavor.stringFlavor;
if (contents.isDataFlavorSupported(flavor))
try {
String str;
str = (String) contents.getTransferData(flavor);
System.out.println("str........." + str);
} catch (Exception ee) {}
}
//}
class Frame1_btnRemoveAll_actionAdapter implements ActionListener {
private JListTest adaptee;
Frame1_btnRemoveAll_actionAdapter(JListTest adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnRemoveAll_actionPerformed(e);
}
}
class Frame1_listNo2_mouseAdapter extends MouseAdapter {
private JListTest adaptee;
Frame1_listNo2_mouseAdapter(JListTest adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.listNo2_mouseClicked(e);
}
}
class Frame1_btnDelete_actionAdapter implements ActionListener {
private JListTest adaptee;
Frame1_btnDelete_actionAdapter(JListTest adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnDelete_actionPerformed(e);
}
}
class Frame1_btnInsertAll_actionAdapter implements ActionListener {
private JListTest adaptee;
Frame1_btnInsertAll_actionAdapter(JListTest adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnInsertAll_actionPerformed(e);
}
}
class Frame1_btnInsert_actionAdapter implements ActionListener {
private JListTest adaptee;
Frame1_btnInsert_actionAdapter(JListTest adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnInsert_actionPerformed(e);
}
}
class Frame1_listNo1_mouseAdapter extends MouseAdapter {
private JListTest adaptee;
Frame1_listNo1_mouseAdapter(JListTest adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.listNo1_mouseClicked(e);
try {
adaptee.getsyscopy(e);
adaptee.pastCopy(e);
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
分享到:
相关推荐
这个简单的示例演示了如何利用Java Swing中的`JList`来处理用户交互,以及如何通过事件监听器来响应用户的操作。在实际应用中,你可以根据需求进一步定制监听器的行为,例如弹出对话框、更新其他组件的状态或者进行...
在这个例子中,`mouseDragged`方法处理拖动过程,`mouseMoved`方法则跟踪鼠标移动。当鼠标在列表项上按下并移动时,我们交换当前项的位置,模拟拖放效果。请注意,这仅实现了垂直方向的拖动,要添加水平拖动(左右)...
Java Swing JList 列表框的实现 Java Swing JList 列表框是 Java 中的一个基本组件,用于显示多个选项,允许用户选择一个或多个...这个代码实例创建了一个简单的 JList 实例,并添加了选项选中状态被改变的监听器。
【Java实现音乐播放器的简单实例】是一个适合初学者理解Java GUI编程和音频处理的项目。这个实例展示了如何创建一个简单的音乐播放器,包括播放、暂停、切换歌曲和循环播放的功能。以下是关键知识点的详细说明: 1....
Java图形实例大全是一份深入探讨Java图形用户界面(GUI)编程的资源集合,涵盖了Swing库中的多个关键组件和功能。这份资料对于初学者来说尤为宝贵,它通过一系列实例帮助学习者掌握Java GUI编程的基本技巧。 1. **...
例如,一个简单的Swing程序可能包括创建JFrame,添加JButton,然后设置一个ActionListener来处理按钮点击事件。 通过深入研究这些源码实例,你可以掌握Swing的基本用法,了解组件的交互方式,以及如何构建复杂的...
创建和设置`JToolTip`非常简单,可以使用`JComponent.setToolTipText(String text)`方法为组件添加提示文本。 2. JList `JList` 用于展示一系列可选择的项目,用户可以通过单击来选择其中的一项。它可以用来创建...
在压缩包文件"Swing组建应用例子"中,你应该能找到一些具体示例代码,涵盖了上述知识点。通过阅读和运行这些代码,你将能够更加深入地了解如何在实际项目中运用Swing组件。记得动手实践,理论与实践相结合,才能更好...
不同的布局管理器适用于不同的设计需求,例如,FlowLayout适合简单的线性排列,而GridBagLayout则可以实现更复杂的自适应布局。 3. **控件使用**:Java Swing库提供了丰富的组件供开发者使用,如按钮(JButton)、...
6. 设计模式:该代码使用了工厂模式来创建音频播放器的实例。工厂模式是一种常用的设计模式,用于封装对象的创建逻辑。 7. 异常处理:该代码使用了 try-catch 语句来处理可能出现的异常,如 IO 异常、媒体播放异常...
它可以帮助初学者理解如何构建一个简单的Swing应用程序。 2. **readXML_Demo**: 这个例子可能涉及到读取XML文件,Swing可以与Java的DOM或SAX解析器结合,展示如何在GUI中显示XML数据。用户可能可以通过按钮触发...
6. **对话框和菜单**:涵盖JOptionPane的使用,用于创建简单的对话框,以及JMenu、JMenuItem的使用,构建应用程序的菜单栏。 7. **组件的定制**:介绍如何创建自定义组件,扩展Swing的现有组件,实现特定的功能。 ...
8. **设计模式**:良好的软件设计可能涉及到设计模式的应用,如单例模式(Singleton)可能用于音频播放器实例,工厂模式(Factory)可能用于创建不同类型的音频输入流,观察者模式(Observer)可能用于UI与播放器...
这个例子可能是一个简单的Swing应用,旨在帮助开发者理解如何使用Swing来创建交互式的用户界面。以下是对Swing的基本介绍以及如何利用它进行编程的一些关键知识点。 **Swing概述** Swing是Java Foundation Classes ...
在这个例子中,JFrame 用于创建主窗口,JList 显示播放列表,JButton 处理用户操作,如播放、停止、前进和后退。JFileChooser 则用于让用户选择音频文件。 6. **事件处理**: - Java Swing 使用事件监听器模型来...
3. **选择组件**:包括下拉列表(JComboBox)、列表视图(JList)、树视图(JTree)和表格(JTable)。这些组件允许用户从多个选项中进行选择或展示结构化数据。 4. **菜单组件**:Swing提供了菜单栏(JMenuBar)、...
在Swing中,你可以找到各种各样的组件,如按钮(JButton)、文本框(JTextField)、标签(JLabel)、面板(JPanel)、滚动条(JScrollPane)、列表(JList)、表格(JTable)、树形视图(JTree)等。这些组件可以...
在这个例子中,我们首先创建了一个JList并启用其拖放功能。接着,我们为JList和JTextArea创建了自定义的`TransferHandler`,以处理数据的拖入和拖出。请注意,`TransferHandler`的实现会根据实际需求有所不同,例如...
JLabel用于显示文本或图像,JTextArea则适合多行文本输入,JTable用于展示表格数据,而JTree和JList则用于呈现树形和列表结构。 3. **Java2D API**: Java2D是一个高级的图形渲染引擎,可以用来进行更复杂的图形操作...