【发布时间】:2013-01-29 21:35:18
【问题描述】:
我不知道如何为 main 方法编写代码,以便能够将用户所做的月份选择存储在 String[] stringValues 中。这是我的类MultipleIntervalSelection:
package february;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MultipleIntervalSelection extends JFrame
{
private JList monthList; // List of months
private JList selectedMonthList; // Selected months
private JButton button; // To get selected items
private JPanel monthPanel; // To hold components
private JPanel selectedMonthPanel; // To hold components
private JPanel buttonPanel; // To hold the button
// The following array holds the values that will be
// displayed in the monthList list component.
private String[] months = { "January", "February", "March",
"April", "May", "June", "July", "August",
"September", "October", "November", "December" };
/**
* Constructor
*/
public MultipleIntervalSelection()
{
// Call the JFrame constructor.
super("List Demo");
// Specify an action for the close button.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create a BorderLayout manager for the content pane.
setLayout(new BorderLayout());
// Build the panels.
buildMonthPanel();
buildSelectedMonthsPanel();
buildButtonPanel();
// Add the panels to the content pane.
add(monthPanel, BorderLayout.NORTH);
add(selectedMonthPanel, BorderLayout.CENTER);
add(buttonPanel, BorderLayout.SOUTH);
// Pack and display the window.
pack();
setVisible(true);
}
/**
* The buildMonthPanel method adds a list containing the
* names of the months to a panel.
*/
private void buildMonthPanel()
{
// Create a panel to hold the list.
monthPanel = new JPanel();
// Create the list.
monthList = new JList(months);
// Set the list to multiple interval selection mode.
monthList.setSelectionMode(
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
// Set the number of visible rows to 6.
monthList.setVisibleRowCount(6);
// Add the list to a scroll pane.
JScrollPane monthListScrollPane =
new JScrollPane(monthList);
// Add the scroll pane to the panel.
monthPanel.add(monthListScrollPane);
}
/**
* The buildSelectedMonthsPanel method adds a list to
* a panel. This will hold the selected months.
*/
private void buildSelectedMonthsPanel()
{
// Create a panel to hold the list.
selectedMonthPanel = new JPanel();
// Create the list.
selectedMonthList = new JList();
// Set the number of visible rows to 6.
selectedMonthList.setVisibleRowCount(6);
// Add the list to a scroll pane.
JScrollPane selectedMonthScrollPane =
new JScrollPane(selectedMonthList);
// Add the scroll pane to the panel.
selectedMonthPanel.add(selectedMonthScrollPane);
}
/**
* The buildButtonPanel method adds a button to a panel.
*/
private void buildButtonPanel()
{
// Create a panel to hold the button.
buttonPanel = new JPanel();
// Create the button.
button = new JButton("Get Selections");
// Add an action listener to the button.
button.addActionListener(new ButtonListener());
// Add the button to the panel.
buttonPanel.add(button);
}
/**
* Private inner class that handles the event when
* the user clicks the "Get Selections" button.
*/
private class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
// Get all the items that were selected.
Object[] selections = monthList.getSelectedValues();
// Display the items in selectedMonthList.
selectedMonthList.setListData(selections);
}
private void getValues()
{
Object months;
months = monthList.getSelectedValues();
return months;
}
}
}
以下是我的主要课程:
package february;
public class Alert {
public static void main(String[] args) {
MultipleIntervalSelection monthsInterval = new MultipleIntervalSelection();
monthsInterval.setVisible(true);
Object months = monthsInterval.getValues();
String[] stringValues = (String[])months;
System.out.println(stringValues);
}
}
main 方法将执行,但控制台中没有结果。我需要将用户选择的月份的名称(字符串值)保存在我的 String[] stringValues 中。请大家帮忙看看
【问题讨论】:
-
如果
JFrame改为JOptionPane或模态JDialog,结果可能如您所料。有关详细信息,请参阅How to Use Modality in Dialogs。顺便说一句 -package february;列出一年中月份的类的奇数包名称。我期待更像package months; -
实际上你的程序只启动了名为 EDT(事件调度线程)的“GUI 线程”。这个线程是永久的,并且永远不会停止,直到你的程序没有结束(例如使用 System.exit(0))。
标签: java swing list user-interface main