简体   繁体   English

从JOptionPane返回值

[英]Return the value from JOptionPane

I have made a JOptionPane which contains a JPanel . 我已经制作了一个包含JPanelJOptionPane The panel contains one button and one Jtable. 该面板包含一个按钮和一个Jtable。

JPanel p = atomicAttack.getPanel(); //make the panel and return it
JOptionPane.showOptionDialog(null, p,"Atomic Attacks", 
            JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE, 
            null, new Object[]{}, null);

and inside the JButton i have: 在JButton中,我有:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
    selectedId=jTable1.getValueAt(jTable1.getSelectedRow(), 0).toString();
}  

I need to when the user clicks on the button, the JOption get closed and the selectedId get return from the JOptionPane ? 我需要在用户单击按钮时关闭JOption从JOptionPane返回 selectedId吗?

I have seen this , but it is not exactly what i am looking for. 我已经看到 ,但这并不是我想要的。 Because the button does not return the value for me. 因为该按钮不会为我返回值。

Focus on the models and things will be easier. 专注于模型,事情会更容易。

public static void main(String[] args) {
    DefaultTableModel tableModel = new DefaultTableModel();
    tableModel.addColumn("Selection", new Object[] { "A", "B", "C" });

    JTable table = new JTable(tableModel);
    ListSelectionModel selectionModel = table.getSelectionModel();

    JPanel p = new JPanel(new BorderLayout());
    p.add(table, BorderLayout.CENTER);

    int option = JOptionPane.showConfirmDialog(null, p, "Atomic Attacks", JOptionPane.OK_CANCEL_OPTION,
            JOptionPane.INFORMATION_MESSAGE);

    if (JOptionPane.OK_OPTION == option) {
        printSelection(selectionModel, tableModel);
    } else {
        selectionModel.clearSelection();
    }

}

private static void printSelection(ListSelectionModel selectionModel, TableModel tableModel) {
    for (int i = selectionModel.getMinSelectionIndex(); i <= selectionModel.getMaxSelectionIndex(); i++) {
        if (selectionModel.isSelectedIndex(i)) {
            Object selectedValue = tableModel.getValueAt(i, 0);
            System.out.println(selectedValue);
        }
    }
}

If you now select multiple rows 如果现在选择多行

JOptionPane中的表模型选择

and press the ok button the result will be 然后按确定按钮,结果将是

A
C

If you want a single selection you can just set 如果您想选择一个,则只需设置

ListSelectionModel selectionModel = table.getSelectionModel();      
selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM