当前位置: 首页 > 知识库问答 >
问题:

JList设置为new DefaultListModel时不更新

冯阳云
2023-03-14
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 ); 
    UIManager.put("TabbedPane.focus", Color.WHITE); 

    setTitle("Main Menu");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //setBounds(100, 100, 848, 680);
    //setLocation(10, 10);
    setLocationRelativeTo(null); // set jFrame alignment to center

    //parent(first) panel 
    contentPane = new JPanel();
    contentPane.setBackground(Color.BLACK);
    contentPane.setBorder(new EmptyBorder(2, 2, 2, 2));
    setContentPane(contentPane);
    contentPane.setLayout(new BorderLayout(0, 0));

    //Main Menu BAR
    menuBar = new JMenuBar();
    menuBar.setFont(new Font("Tekton Pro Ext", Font.PLAIN, 11));
    setJMenuBar(menuBar);

    //Menu 1
    mnNewMenu1 = new JMenu("New menu");
    menuBar.add(mnNewMenu1);
    //Menu 1 MenuItem 1

    mt1 = new JMenuItem("Browse New Project");
    mt1.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
        BrowseScreen frame = new BrowseScreen();
        frame.setVisible(true);
        }


    });


    mnNewMenu1.add(mt1);




    //second panel
    panel = new JPanel();
    contentPane.add(panel, BorderLayout.CENTER);
    panel.setLayout(new BorderLayout(0, 0));

    spver =new  JSplitPane(JSplitPane.VERTICAL_SPLIT);
    spver.setDividerLocation(500);
    spver.setEnabled(false);

    bottom=new JPanel();
    sphor =new  JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
    sphor.setEnabled(false);
    spver.setTopComponent(sphor);
    spver.setBottomComponent(bottom);
    bottom.setLayout(null);
    panel.add(spver);

    sphor.setDividerLocation(180);
    left =new JPanel();
    right =new JPanel();
    sphor.setRightComponent(right);
    right.setLayout(new GridLayout(0, 1, 0, 0));

    tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);

    JPanel tab1 = new JPanel();
    tabbedPane.addTab("fffa", tab1);
    tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);

    JPanel tab2 = new JPanel();
    tabbedPane.addTab("TAB1", tab2);
    tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);



    right.add(tabbedPane);
    sphor.setLeftComponent(left);
    left.setLayout(new BorderLayout(0, 0));

    file_list_panel= new JPanel();
    file_list_panel.setBackground(Color.BLACK);
    file_list_panel.setForeground(Color.WHITE);

    label = new JLabel("Java Files of Project");
    label.setBackground(Color.BLACK);
    label.setForeground(Color.WHITE);
    label.setFont(new Font("Garamond", Font.BOLD, 14));
    file_list_panel.add(label);
    left.add(file_list_panel, BorderLayout.NORTH);


    list_1 = new JList<String>(listmodel_1);



    jscroll_list = new JScrollPane(list_1);
    left.add(jscroll_list, BorderLayout.CENTER);


    }
    public  void setList(Vector<String> files){
        listmodel_1.removeAllElements();
        list_1.removeAll();
        for(int i=0;i<files.size();i++)
            listmodel_1. addElement(files.elementAt(i));
        list_1.setModel(listmodel_1);
        this.invalidate();
        this.validate();
        this.repaint();
    }

}

setList在调用setVisible(false)之前从browse窗口调用;ie.当浏览窗口消失时调用此方法。它执行方法中的所有操作,但不在MainMenu公共空号setFileList()中更新它{MainMenu mm=new MainMenu();mm.setlist(java_files);}

list_1-jlist listmodel_1=DefaultListModel

我试图刷新框架,但在将新列表添加到主窗口后没有刷新...

在JList更新之前,我在另一个窗口中浏览文件,然后它被设置为setVisible(false),然后MainMenu得到焦点并调用setList方法,但它没有改变

共有1个答案

云新知
2023-03-14

基本上,您正在创建一个新的JList并将模型与之关联,但这对屏幕上的JList没有影响

public  void setList(Vector<String> files){
    // Good...
    listmodel_1.removeAllElements();
    // Not required, has nothing to do with the items in the list
    //list_1.removeAll();
    // Good
    for(int i=0;i<files.size();i++)
        listmodel_1. addElement(files.elementAt(i));
    // This here is your problem
    //list_1=new JList<String>(listmodel_1);
    // Because I have no idea what model list_1 is actually using...
    list_1.setModel(listmodel_1);
    //list_1.setSelectedIndex(0);
    //this.invalidate();
    //this.validate();
    //this.repaint();
}
 类似资料:
  • 我尝试重新验证()和重新绘制(),但没有改变。 现在有趣的事情来了。如果我用for(int I=0;I 只有当我用另一个我手动填写的列表创建和设置新模型时,我才能查看更新。

  • 问题内容: 我正在尝试创建一个简单的程序来管理员工。尝试添加新员工时,我似乎无法让该员工显示在Jlist上。 主机… 添加员工的对话… 这就是我用来添加员工的方法 我认为这是正确的方法,但似乎无效。任何帮助将不胜感激。 问题答案: 有两个问题, 第一个: 不好:。使用equals(…)或equalsIgnoreCase(…)。理解检查是否绝对不是您感兴趣的 引用 相等性。您需要 函数 相等性,这是

  • 下面我有一个方法,调用时应该在列表中显示arrayList元素的属性: 但是,当调用它时,会出现以下错误: 线程 “AWT-EventQueue-0” java.lang.ClassCastException: supermarketiteration2 中的异常。ShopJFrame$63 不能投射到 javax.swing.DefaultListModel 我该如何解决这个问题? 编辑** 如

  • 我正在尝试移除(或者只是设置为不可见)我的JList的背景和边框。 当我在它上设置透明颜色时,我的JList背景保持白色。 这是我的自定义jcombox呈现器类: 我尝试在每个组件上放置和,但是没有好的结果。 一个解决方案是调整列表中图像的大小,但我的图像不是矩形的,所以列表背景的角是可见的。

  • 我正在尝试将Hibernate envers添加到我的应用程序中。我使用的数据库已经有很多数据了。这是Hibernate配置 这里是我要审核的实体(简化版) 当我启动雄猫服务器时,出现此错误 我调试了,在第1204行Configuration.class(包org.hibernate.cfg)中,我看到应用程序试图创建REVINFO表。在那之前,table leCatalo为空,但在创建REVIN

  • 问题内容: 我正在使用sqlalchemy引擎创建表,但是即使我的create语句执行没有错误,当我尝试预先设置角色时,表也不会显示在数据库中。 对于上下文,我使用的是python 3.6,sqlalchemy版本1.2.17和postgres 11.1,并且角色“ read_write”绝对存在,并且具有在公共场所创建表的所有必要权限(我在pgadmin中运行上面的确切序列没有问题)。 有谁知道