+ -
当前位置:首页 → 问答吧 → 在JApplet中无法开启JDialog的问题?

在JApplet中无法开启JDialog的问题?

时间:2011-10-25

来源:互联网

Dear 前辈们,
我写了一个可当Applet也可当App的java程式. 希望能透过下拉式选单的选取来驱动AcionListener开启
一个JDialog, 不是JOptionPane. 我试改了一个简单的java程式(jdTest.java), 可以开启一个空白JDialog视窗.
但是却无法在原来的程式(Test98.java)开启, 会出现

"Test98.java:2110: cannot find symbol
symbol : constructor JDialog(Test98,java.lang.String)
location: class javax.swing.JDialog
JDialog dialogOval = new JDialog(Test98.this, "hello");
^
Note: Test98.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details."

的错误讯息.

我不知原因为何, 请前辈们帮忙指正该如何修改. 不胜感激, 谢谢!

jdTest.java :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
public class jdTest extends JFrame{
  private static final long serialVersionUID = 1; private static int width = 480; private static int height = 300; private JButton oval = new JButton("test");
  public jdTest() { super("aa"); this.setLayout(new GridLayout(4, 1)); this.setBounds(new Rectangle(200, 200, width, height)); JPanel p = new JPanel(); oval.addActionListener(new MyActionListener()); p.add(oval); this.add(p); JPanel p1 = new JPanel(); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); }
  public static void main(String[] args) { new jdTest(); } public class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { JDialog dialogOval = new JDialog(jdTest.this, "Draw Oval"); JDialog.setDefaultLookAndFeelDecorated(true); dialogOval.setBounds(new Rectangle(200, 200, 200, 200)); dialogOval.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialogOval.setVisible(true); } }
}


Test98.java 部分程式 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;
import javax.swing.event.MouseInputAdapter;
import javax.swing.event.*;
import java.awt.event.MouseEvent;
import java.lang.Math;
import java.awt.image.BufferedImage;
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;
import java.util.*;
import java.awt.geom.Ellipse2D;
import netscape.javascript.JSObject; //used for communicate with javascript
 
public class Test98 extends JApplet{ ... public void init() { ... mnNew=new JMenuItem("New"); mnNew.addActionListener(new MyActionListener()); mnFile.add(mnNew); ... } public class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent e){ ... else if (e.getSource() == mnNew){ JDialog dialogOval = new JDialog(Test98.this, "hello"); JDialog.setDefaultLookAndFeelDecorated(true); dialogOval.setBounds(new Rectangle(200, 200, 200, 200)); dialogOval.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialogOval.setVisible(true); } } } ... public static void main(String argv[]) { if(argv.length > 0){ latFileName=argv[0]; } final Test98 demo = new Test98(); demo.init(); JFrame f = new JFrame("Java 2D(TM) Demo - Test98"); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); f.getContentPane().add("Center", demo); f.pack();
// f.setSize(new Dimension(820,670)); //820 = 600 + 20(scrollbar) + 200 , 670 = 30 + 600 + 20(scrollbar) + 20 f.show(); } }
...

作者: divspan   发布时间: 2011-10-25

divspan wrote:
Dear 前辈们,
我写了一个可当Applet也可当App的java程式. 希望能透过下拉式选单的选取来驱动AcionListener开启
一个JDialog, 不是JOptionPane. 我试改了一个简单的java程式(jdTest.java), 可以开启一个空白JDialog视窗.
但是却无法在原来的程式(Test98.java)开启, 会出现

"Test98.java:2110: cannot find symbol
symbol : constructor JDialog(Test98,java.lang.String)
location: class javax.swing.JDialog
JDialog dialogOval = new JDialog(Test98.this, "hello");
^
Note: Test98.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details."

的错误讯息.

我不知原因为何, 请前辈们帮忙指正该如何修改. 不胜感激, 谢谢!


请看一下 JDialog 的 API doc

作者: Duncan   发布时间: 2011-10-25