Die Beispiele, die ich finden konnte, hatten den Standardfehler von Beispielen: Sie waren nicht nah genug an dem, was ich mir sagen wollte, und sagten nicht genug darüber, wie die Dinge funktionierten, um sie zu verändern mein eigenes. Ich stieß schließlich auf ein Tutorial, das erklärte, dass die "Nachrichten" im Dialog Komponenten sein könnten, und der JOptionPane-Code würde sie rendern. In diesem Beispiel wird ein JSlider verwendet. Ich nehme an, dass auch andere JComponents verwendet werden können.
Die Dokumentation spricht auch darüber, was zu tun ist, wenn Sie "den Dialog direkt anzeigen möchten", aber ich habe nie herausgefunden, was sie damit meinten.
Ich stolperte um in verschiedenen Formen von JOptionPane Verfahren vor dem folgenden herauszufinden:
/**
* display the dialog for entering the number of spots to move the first
* marble chosen after a 7 is played. Returns 0 if the user cancelled this
* operation.
*/
@Override
public int getMoveCount()
{
int moveCount = 0;
JSlider slider = createSlider();
JPanel sliderPanel = createSliderPanel("myMessage", slider);
String title = "myTitle";
int dialogResponse = JOptionPane.showOptionDialog
(this, // I'm within a JFrame here
sliderPanel,
title,
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, null, null
);
if (JOptionPane.OK_OPTION == dialogResponse)
{ moveCount = slider.getValue(); }
else { moveCount = 0; } // works for cancel button, red 'x', and keyboard escape key
return moveCount;
}
private JSlider createSlider()
{
JSlider slider = new JSlider(1,7);
slider.setMajorTickSpacing(1);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
slider.setValue(7); // default to 7
return slider;
}