java - java 中已弃用代码的替代方案?

标签 java user-interface deprecated

我目前正在从一本名为“starting out with java”的书中学习GUI应用程序。我已经尝试了作者关于 JList 的代码示例之一,但事实证明 ButtonListener 中的 getSelectedValues() 已被弃用。我只是想问你们是否知道该特定代码的任何替代方案。虽然代码仍然有效,但我仍然想知道替代方案。

代码如下:

package Practice; 
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Practice1 extends JFrame{
private JPanel monthPanel;
private JPanel selectedMonthPanel;
private JPanel buttonPanel;
private JList monthList;
private JList selectedMonthList;
private JScrollPane scrollPane1;
private JScrollPane scrollPane2;
private JButton button;

private String[]months = {"January","February","March","April",
        "May","June","July","August","September","October",
        "November","December"};

public Practice1(){
    setTitle("List Demo");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new BorderLayout());
    buildMonthPanel();
    buildSelectedMonthPanel();
    buildButtonPanel();
    add(monthPanel,BorderLayout.NORTH);
    add(selectedMonthPanel,BorderLayout.CENTER);
    add(buttonPanel,BorderLayout.SOUTH);
    pack();
    setVisible(true);
}

private void buildMonthPanel(){
    monthPanel = new JPanel();
    monthList = new JList(months);
    monthList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    monthList.setVisibleRowCount(6);
    scrollPane1 = new JScrollPane(monthList);
    monthPanel.add(scrollPane1);
}

private void buildSelectedMonthPanel(){
    selectedMonthPanel = new JPanel();
    selectedMonthList = new JList();
    selectedMonthList.setVisibleRowCount(6);
    scrollPane2 = new JScrollPane(selectedMonthList);
    selectedMonthPanel.add(scrollPane2);
}

private void buildButtonPanel(){
    buttonPanel = new JPanel();
    button = new JButton("Get Selections");
    button.addActionListener(new ButtonListener());
    buttonPanel.add(button);
}

private class ButtonListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
        Object[]selections = monthList.getSelectedValues();
        selectedMonthList.setListData(selections);
    }
}

public static void main(String[]args){
    new Practice1();
}
}

最佳答案

将其替换为以下内容

monthList.getSelectedValuesList().toArray()

参见This post了解更多信息

关于java - java 中已弃用代码的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32752711/

相关文章:

java - Vertx 将处理程序添加到 Spring 数据 API

java - Java Web 应用程序中的 SSO 可以使用什么

Java 按钮全屏

asp.net-mvc - 有没有一种方法可以在不使用 if-else 语句的情况下在某个时刻刷新 View 的内容?

c# - 在特定日期后过时?

java - 如何确定 JSP 页面使用哪个 Tile 定义?

java - 在创建主要 Activity 之前运行的简单 EditText 警报对话框

c++ - Qt:在 child 之前捕获事件

java - 仅在界面上使用@Deprecated 符号有什么好处?

javascript - DOM4:弃用的属性和方法,这是什么意思?