Jspinner和JOptionPane

我应该如何修改此代码才能编译?我知道有很多问题...非常感谢〜 我应该在statechanged中放置什么? 我应该如何JSpinner的链接到的JOptionPane?(我创建的btnEnter,我添加的ChangeListener,做又是什么?)Jspinner和JOptionPane

import javax.swing.*; 

import java.awt.Container;

import java.util.Calendar;

import java.util.Date;

import javax.swing.event.*;

import java.awt.event.*;

import java.awt.Graphics;

import java.lang.Comparable;

import javax.swing.JOptionPane;

import javax.swing.JDialog;

public class JSpinnerr extends JApplet

implements ActionListener, ChangeListener{

private static final long serialVersionUID = 2005L;

private Container window;

private JButton btnEnter;

private JOptionPane pane;

private JLabel favoriteJl;

private JButton[] choiceJb;

private ButtonGroup choiceBg;

//spinner.setEditor(new JSpinner.DateEditor(spinner, "MM/yyyy"));

public void init() {

window = new DoubleBufferedPanel();

setContentPane(window);

createAppearance();

createGUI();

createJOptionPane();

}

public void createAppearance(){

window.setLayout(null);

}

public void createGUI(){

favoriteJl = new JLabel("When are you going to graduate from High School?");

favoriteJl.setSize(100, 30);

favoriteJl.setLocation(20, 120);

window.add(favoriteJl);

btnEnter = new JButton("Enter");

btnEnter.setSize(100, 30);

btnEnter.setLocation(220, 120);

btnEnter.addChangeListener(this);

window.add(btnEnter);

Date today = new Date();

JSpinner dateJs = new JSpinner(new SpinnerDateModel(today, null, null,

Calendar.MONTH));

JSpinner.DateEditor dateDe = new JSpinner.DateEditor(dateJs, "MM/yy");

dateJs.setEditor(dateDe);

window.add(dateJs);

setVisible(true);

}

public void createJOptionPane(){

JOptionPane pane = new JOptionPane("Congratulations!");

JDialog dialog = pane.createDialog(null, "Way to go! Please continue to work hard.");

dialog.show();

choiceBg = new ButtonGroup();

choiceJb = new JButton[] {

new JButton("Laugh"),

new JButton("I am worry"),

new JButton("I don't want to work anymore"),

new JButton("Present Options") };

for (int i = 0; i < choiceJb.length; i++) {

choiceBg.add(choiceJb[i]);

pane.add(choiceJb[i]);

}

window.add(pane);

}

public void actionPerformed(ActionEvent e) {

//if(e.getSource() ==)

// {

// }

if(choiceJb[0].isSelected())

{

pane.showMessageDialog(this, "Laugh",

"Don't laugh", pane.WARNING_MESSAGE);

}

else if (choiceJb[1].isSelected()) {

Object[] options = {"Because of my grades",

"Because of my SAT scores"};

int n = pane.showConfirmDialog(this,

"Why are you worry?", "I am worry", JOptionPane.YES_NO_OPTION,

JOptionPane.QUESTION_MESSAGE,

null,

options,

options[0]);

}

else if (choiceJb[2].isSelected()) {

Object[] reasons = {"I just want to chill out", "I have no incentive to work hard", "I am tired"};

String s = (String)pane.showInputDialog(this, "What is the reason that you don't want to work anymore?",

"Your reason?", pane.PLAIN_MESSAGE, null, reasons, "I just want to chill out");

}

else if (choiceJb[3].isSelected()) {

JOptionPane.showOptionDialog(this, "Present Options",

"Simple Dialog", getButtonType(), getMessageType(),

null, substrings(ButtonLabels), null);

}

}

public void stateChanged(ChangeEvent e){

}

class DoubleBufferedPanel extends JPanel {

private static final long serialVersionUID = 44L;

public void paint(Graphics g){

super.paint(g);

}

}

}

编辑的版本 进口的javax.swing。 ; import java.awt.Container; import java.util.Calendar; import java.util.Date; import javax.swing.event。; import java.awt.event。*; import java.awt.Graphics; import java.lang.Comparable; import javax.swing.JOptionPane; import javax.swing.JDialog; import java.awt.Dimension; import java.awt.FlowLayout;

public class JSpinnerrDemo extends JApplet 

implements ActionListener, ChangeListener{

private static final long serialVersionUID = 2005L;

private Container window;

private JButton btnEnter;

private JOptionPane pane;

private JLabel dateJl;

private JButton[] choiceJb;

private ButtonGroup choiceBg;

private JDialog dialog;

//spinner.setEditor(new JSpinner.DateEditor(spinner, "MM/yyyy"));

public void init() {

window = new DoubleBufferedPanel();

setContentPane(window);

createAppearance();

createGUI();

createJOptionPane();

}

public void createAppearance(){

window.setLayout(null);

}

public void createGUI(){

dateJl = new JLabel("When are you going to graduate from High School?");

dateJl.setSize(400, 30);

dateJl.setLocation(20, 120);

window.add(dateJl);

btnEnter = new JButton("Enter");

btnEnter.setSize(100, 30);

btnEnter.setLocation(220, 180);

btnEnter.addActionListener(this);

window.add(btnEnter);

Date today = new Date();

JSpinner dateJs = new JSpinner(new SpinnerDateModel(today, null, null,

Calendar.MONTH));

JSpinner.DateEditor dateDe = new JSpinner.DateEditor(dateJs, "MM/yy");

dateJs.setEditor(dateDe);

dateJs.setLocation(20, 160);

dateJs.setSize(100, 30);

window.add(dateJs);

dateJs.addChangeListener(this);

dateJs.setVisible(true);

}

public void createJOptionPane(){

JOptionPane pane = new JOptionPane("Way to go! Please continue to work hard.");

JDialog dialog = pane.createDialog(null, "Congratulations!");

dialog.setSize(new Dimension(300, 150));

dialog.setLocationRelativeTo(this);

dialog.setLayout(new FlowLayout());

dialog.setVisible(false);

choiceBg = new ButtonGroup();

choiceJb = new JButton[] {

new JButton("Laugh"),

new JButton("I am worry"),

new JButton("I don't want to work anymore"),

new JButton("What?") };

for (int i = 0; i < choiceJb.length; i++) {

choiceBg.add(choiceJb[i]);

dialog.add(choiceJb[i]);

}

}

public void actionPerformed(ActionEvent e) {

if(e.getSource() == btnEnter)

{

dialog.setVisible(true);

window.add(dialog);

//JOptionPane.showMessageDialog();

}

if(choiceJb[0].isSelected())

{

JOptionPane.showMessageDialog(this, "Laugh",

"Don't laugh", JOptionPane.WARNING_MESSAGE);

}

else if (choiceJb[1].isSelected()) {

Object[] options = {"Because of my grades",

"Because of my SAT scores"};

JOptionPane.showOptionDialog(this,

"Why are you worry?",

"I am worry",

JOptionPane.YES_NO_OPTION,

JOptionPane.QUESTION_MESSAGE,

null, //do not use a custom Icon

options, //the titles of buttons

options[0]); //default button title

// showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon)

}

else if (choiceJb[2].isSelected()) {

Object[] reasons = {"I just want to chill out", "I have no incentive to work hard", "I am tired"};

JOptionPane.showInputDialog(this, "What is the reason that you don't want to work anymore?",

"Your reason?", JOptionPane.PLAIN_MESSAGE, null, reasons, "I just want to chill out");

}

else if (choiceJb[3].isSelected()) {

Object[] optionss = {"Leave me alone",

"Bye"};

JOptionPane.showOptionDialog(this, "What what?",

"What?", JOptionPane.YES_NO_CANCEL_OPTION,

JOptionPane.QUESTION_MESSAGE,

null,

optionss,

optionss[0]);

}

}

public void stateChanged(ChangeEvent e){

}

class DoubleBufferedPanel extends JPanel {

private static final long serialVersionUID = 44L;

public void paint(Graphics g){

super.paint(g);

}

}

}

回答:

ChangeListener旨在为JSpinnerdateJs而非JButtonbtnEnter。您可以使用:

dateJs.addChangeListener(new ChangeListener() { 

@Override

public void stateChanged(ChangeEvent e) {

SpinnerModel dateModel = dateJs.getModel();

if (dateModel instanceof SpinnerDateModel) {

Date date = ((SpinnerDateModel)dateModel).getDate();

// do stuff with date...

}

}

});

旁注:

  • 方法show赞成不赞成setVisible为显示JDialog窗口。
  • 使用layout manager是recommended by Sun/Oracle - 它们管理组件的大小和定位。
  • 单独paint方法DoubleBufferedPanel为空,自定义绘画在Swing中应通过覆盖paintComponent并调用super.paintComponent(g)来完成。


编辑:

您阴影的dialog变量。更换

JDialog dialog = pane.createDialog(null, "Congratulations!"); 

dialog = pane.createDialog(null, "Congratulations!"); 

以上是 Jspinner和JOptionPane 的全部内容, 来源链接: utcz.com/qa/267290.html

回到顶部