public class JFrameWithPanel extends JFrame implements ActionListener, ItemListener
{
int packageIndex;
double price;
double[] prices = {49.99, 39.99, 34.99, 99.99};
DecimalFormat money = new DecimalFormat("$0.00");
JLabel priceLabel = new JLabel("Total Price: "+price);
JButton button = new JButton("Check Price");
JComboBox packageChoice = new JComboBox();
JPanel pane = new JPanel();
TextField text = new TextField(5);
JButton accept = new JButton("Accept");
JButton decline = new JButton("Decline");
JCheckBox serviceTerms = new JCheckBox("I Agree to the Terms of Service.", false);
JTextArea termsOfService = new JTextArea("This is a text area", 5, 10);
public JFrameWithPanel()
{
super("JFrame with Panel");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pane.add(packageChoice);
setContentPane(pane);
setSize(250,250);
setVisible(true);
packageChoice.addItem("A+ Certification");
packageChoice.addItem("Network+ Certification ");
packageChoice.addItem("Security+ Certifictation");
packageChoice.addItem("CIT Full Test Package");
pane.add(button);
button.addActionListener(this);
pane.add(text);
text.setEditable(false);
text.setBackground(Color.WHITE);
text.addActionListener(this);
pane.add(termsOfService);
termsOfService.setEditable(false);
termsOfService.setBackground(Color.lightGray);
pane.add(serviceTerms);
serviceTerms.addItemListener(this);
pane.add(accept);
accept.addActionListener(this);
pane.add(decline);
decline.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
packageIndex = packageChoice.getSelectedIndex();
price = prices[packageIndex];
text.setText("$"+price);
Object source = e.getSource();
if(source == accept)
{
if(serviceTerms.isSelected() == false)
{
JOptionPane.showMessageDialog(null,"Please accept the terms of service.", "Terms of Service", JOptionPane.ERROR_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(null,"Thank you. We will now move on to registering your product.");
pane.dispose();
}
}
else if(source == decline)
{
System.exit(0);
}
}
public void itemStateChanged(ItemEvent e)
{
int select = e.getStateChange();
}
public static void main(String[] args)
{
String value1;
int constant = 1, invalidNum = 0, answerParse, packNum, packPrice;
JOptionPane.showMessageDialog(null,"Hello!"+"\nWelcome to the CIT Test Program.");
JOptionPane.showMessageDialog(null,"IT WORKS!");
}
}//class
如何关闭此框架,以便我的JOptionPane消息对话框可以在程序中继续,而不会完全退出程序。
编辑:我试过.dispose()但是我明白了:
cannot find symbol
symbol : method dispose()
location: class javax.swing.JPanel
pane.dispose();
^
答案 0 :(得分:0)
请尝试:this.dispose()
。
JPanel
没有这种方法,JFrame
没有
修改强>
在你的主要内容中,你没有打电话给你的框架:
public static void main(String[] args) {
String value1;
int constant = 1, invalidNum = 0, answerParse, packNum, packPrice;
JOptionPane.showMessageDialog(null,"Hello!"+"\nWelcome to the CIT Test Program.");
JOptionPane.showMessageDialog(null,"IT WORKS!");
}
尝试添加它并查看差异:
public static void main(String[] args) {
String value1;
int constant = 1, invalidNum = 0, answerParse, packNum, packPrice;
JOptionPane.showMessageDialog(null,"Hello!"+"\nWelcome to the CIT Test Program.");
JOptionPane.showMessageDialog(null,"IT WORKS!");
new JFrameWithPanel(); //<-- creating a JFrameWithPanel
}
同样在动作执行的方法中,你正在显示对话框然后处理,可能你想要反过来做。
if(serviceTerms.isSelected() == false) {
JOptionPane.showMessageDialog(null,"Please accept the terms of service.", "Terms of Service", JOptionPane.ERROR_MESSAGE);
} else {
this.dispose();
JOptionPane.showMessageDialog(null,"Thank you. We will now move on to registering your product.");
}
结果:
main http://img194.imageshack.us/img194/7038/capturadepantalla201006x.png
其次是
result http://img85.imageshack.us/img85/8513/capturadepantalla201006l.png
编辑2
尝试下面的代码,它应该显示一个框架,当你点击“关闭”按钮它应该显示一个对话框,那是你要找的?
import javax.swing.*;
import java.awt.event.*;
class FrameDemo {
public static void main( String [] args ) {
final JFrame frame = new JFrame("Main frame");
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.add( new JPanel(){{
add( new JLabel("This is the main content"));
add( new JButton("Close"){{
addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e ) {
frame.dispose();
JOptionPane.showMessageDialog(frame,"IT WORKS!");
}
});
}});
}});
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );
}
}
答案 1 :(得分:0)
我知道这可能是一个愚蠢的答案,但有时最明显的问题是造成问题。我没有看到你在代码中导入javax.swing ......你做到了吗?