gpt4 book ai didi

java - 编写 Main 方法问题。 Java GUI 列表

转载 作者:行者123 更新时间:2023-11-29 03:37:11 26 4
gpt4 key购买 nike

我不知道如何为 main 方法编写代码,以便能够将用户选择的月份存储在 String[] stringValues 中。这是我的类(class) 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 中。请任何人帮助我

最佳答案

您有两个选择。您可以使用 JDialog 而不是使用 JFrame

模态对话框将在它可见时停止您的程序执行,直到它关闭。

Dialog

另一种选择是使用 JOptionPane,这要简单得多...

JOptionPane

public class TestOption {

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

public TestOption() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}

DialogPane dialogPane = new DialogPane();
JDialog dialog = new JDialog((Frame) null, "Testing", true);
dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dialog.setLayout(new BorderLayout());
dialog.add(dialogPane);
dialog.pack();
dialog.setLocationRelativeTo(null);
dialog.setVisible(true);

List<String> values = dialogPane.getValues();

MultipleIntervalSelection options = new MultipleIntervalSelection();
int result = JOptionPane.showConfirmDialog(null, options, "Options", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
values = options.getValues();
}
}
});
}

public class DialogPane extends JPanel {

private MultipleIntervalSelection options;
private boolean okay = false;

public DialogPane() {

setLayout(new BorderLayout());

options = new MultipleIntervalSelection();
add(options);

JButton btnOkay = new JButton("Okay");
JButton btnCancel = new JButton("Cancel");

JPanel actions = new JPanel();
actions.add(btnOkay);
actions.add(btnCancel);

add(actions, BorderLayout.SOUTH);

btnOkay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
okay = true;
dispose();
}

});
btnCancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
okay = false;
dispose();
}

});

}

protected void dispose() {
SwingUtilities.getWindowAncestor(this).dispose();
}

public List<String> getValues() {

return options.getValues();

}

}

public class MultipleIntervalSelection extends JPanel {

private JList monthList; // List of months
private JList selectedMonthList; // Selected months
private JPanel monthPanel; // To hold components
private String[] months = {"January", "February", "March",
"April", "May", "June", "July", "August",
"September", "October", "November", "December"};

/**
* Constructor
*/
public MultipleIntervalSelection() {
// Create a BorderLayout manager for the content pane.
setLayout(new BorderLayout());

// Build the panels.
buildMonthPanel();

// Add the panels to the content pane.
add(monthPanel, BorderLayout.NORTH);
}

/**
* 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(new BorderLayout());

// 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);
}

public List<String> getValues() {
List<String> months;
months = monthList.getSelectedValuesList();
return months;
}
}
}

关于java - 编写 Main 方法问题。 Java GUI 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14868806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com