我写了一个类(我们称之为Model.java),它包含一个Deque<T>用于入队和出列项的方法.现在我想把它绑定到GUI JList.我对如何以某种方式使用我的"模型"数据 - Deque - 作为JList想要的DefaultListModel感到困惑.我仍然在努力真正获得OO概念,因为它们适用于GUI编程.DefaultListModel文档说明:
此类松散地实现了java.util.Vector API,因为它实现了1.1.x版本的java.util.Vector,没有集合类支持,并在发生更改时通知ListDataListeners.目前它代表一个矢量......
有没有办法让DefaultListModel使用我Deque<T>而不是Vector,从而允许我的Model.java代码保持基本不变,同时免费提供所有的监听/通知行为?或者我是否必须重写Model.java以使用DefaultListModel而不是Deque<T>?
public class MainMenu extends JFrame {
private JPanel panel,file_list_panel;
private JPanel contentPane;
private JMenuBar menuBar;
private JMenu mnNewMenu1,mnNewMenu2,mnNewMenu3;
private JMenuItem mt1,mt2,mt3;
private JPanel right,left ,bottom;
private JSplitPane spver ,sphor;
private JTabbedPane tabbedPane;
private JLabel label;
private JList<String> list_1;
private JScrollPane jscroll_list;
private DefaultListModel listmodel_1 = new DefaultListModel();
public MainMenu() {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0,0,screenSize.width, screenSize.height);
setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
int intValue = Integer.parseInt( "EEEEEE",16);
Color aColor = new Color( intValue );
UIManager.put("TabbedPane.background", new Color(230, 216, 174));
UIManager.put("TabbedPane.selected", Color.WHITE);
UIManager.put("TabbedPane.contentAreaColor",aColor ); …Run Code Online (Sandbox Code Playgroud) 下面是我的代码,显示图像JList.我想按照中显示的每个图像编辑描述JList.我不知道该怎么做并且需要帮助.谢谢...
import java.util.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.Serializable;
public class DesignPicture2 {
private static String imageName;
static ArrayList<String> imgName = new ArrayList<String>();
public static void main(String[] args) throws Exception {
DesignPicture2 mm = new DesignPicture2();
mm.getImageName("C:\\Images 2 display");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JFrame frame = new JFrame("Image panel");
frame.setSize(800, 500);
//frame.setLocationByPlatform(true);
frame.setLocation(600, 300);
JList imageList = createImageList();
frame.getContentPane().add(new JScrollPane(imageList));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); …Run Code Online (Sandbox Code Playgroud) 我正在尝试以这样的方式显示患者数据列表,即名称位于我的JList的左侧,并且标识号全部整齐地排列在右侧.我已经查看过甚至为此任务实现了JTable的使用,因为它提供了我希望在这个项目中实现的整洁的列结构,但是有一些功能我要么不知道如何实现,要么我觉得缺乏JTable.
无法根据字母数字键转换我的列表.这是最终用户快速搜索列表的主要方式,因为填充时它可以超过800行.(例如:输入's'转换到以's开头的列表部分)
在视觉上我不喜欢JTables的行选择; 使用两列结构显然两列之间存在中断,与JList不同,这是一个很好的平滑无缝突出显示选择.所有网格线都已关闭,以及使用单元格编辑作为FYI.
我已经包含了我认为的相关代码.我希望能有一些方向,如果我要求的是用JList完成的,还是有办法更好地操作JTable?我没有在JTable API和JList API中找到任何内容,我觉得我在这个问题上回答了我的问题.
package mosaiqToCTWorklist;
import java.awt.Font;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.swing.ButtonGroup;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
public class PatientSelectionWindow extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JRadioButton rdbtnActivePatients;
private JRadioButton rdbtnInactivePatients;
private JRadioButton rdbtnAllPatients;
private JButton btnSendSelection;
private JList<String> patients;
private JScrollPane …Run Code Online (Sandbox Code Playgroud)