swing jdialogg和JFrame有什么区别

JDialog与JFrame之间传值的问题_百度知道
JDialog与JFrame之间传值的问题
JFrame上面有一个Button,点击Button,弹出一个自己设计的JDialog(不是用JOptionPane.show`````dialog())JDialog上面有TextFiled ,Button_2.点击Button_2,把JTextFiled的值传给JFrame的一个变量。如何实现?
给Button添加时间监听器,Button.addActionListener(new ActionListener()
{ public void Performed(ActionEvent e)
{ //在这里面就可以创建一个JDialog了
//创建自己写
//JDialog jDialog=new JDialog(this,&JDialog&,false);
});Button_2同样的道理
其他类似问题
按默认排序
其他1条回答
再JFrame中设置一个静态变量public static String Str=&&;再JDialog中调用JFrame.Str=TextFiled.T
jdialog的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁java 如何在jDialog里调用jFrame的组件_百度知道
java 如何在jDialog里调用jFrame的组件
jFrame用来显示联系人信息,按确晾杭驰夹佻蝗肤融认后关闭jDialog并将刷新jFrame里的数据一个通讯录。目前就是不懂如何在jDialog里调用jFrame相关函数来刷新数据,点击jFrame里的添加按钮弹出jDialog 添加联系人信息
提问者采纳
没有JDialog里正确的操作是获取JDialog上的组件, 取数据, 你这个思路有问题, 这个概念, 放到JFrame上, 所以在Dialog关闭前更新Frame的数据也是没有意义的.Dialog理论上应该是模态操作
嗯,那应该是关闭后更新jFrame吧。我的数据是存放在一个addressBook类里面,点击jDialog的save按钮保存到addressBook里,不用直接获取jDialog的数据,那如何监听jDialog的关闭事件来实现关闭后更新jFrame呢?
JDialog本身支持模态显示, 构造Dialog的时候传入父容器和true(开启模态)这样在Dialog关闭后后面的代码才会继续执行
提问者评价
非常感谢,让我知道了“模态”这词,并且发现之前的思路确实错了,用模态的对话框问题变得简单多了,呵呵。
其他类似问题
按默认排序
其他1条回答
JTextArea();JButton&nbsp.JB&true);&&&&nbsp.addActionListener(new&&final&&&&&&&&&&&&&&&JLabel(&&class&JDialog&&nbsp.dispose();void&&nbsp.ActionL&&import&&&&}&&&&actionPerformed(ActionEvent&&{&&&&import&);&&void&&nbsp.NORTH);&&&&&&&main(String[]&e)&&button&&&&&&&&new&&&&&保存&&&&public&&&&+&&&nbsp.add(new&public&&&import&&&&JTextField&&{&button.add(textA&nbsp.setLocation(getX()&&\n&&phone&&}&50.JFrame:&JTextArea&&&&&50);&&&&&&300);&&&import&&&&&&&&&&&&));&&&&&&&&import&&nbsp.ActionE取消&&&{&actionPerformed(ActionEvent&&&e)&void&=&&&nbsp,&{&&nbsp.addActionListener(new&&&nbsp.append(&&&&&&&JTextField&public&args)&&&nbsp.JDialog//问题的关键在于;=&&&&dialog.&final&&&&&{&nbsp.setVisible(true),&&&&nbsp.&&&&&&&&FrameTest&&&nbsp:&JButton(&&&&&&&new&&nbsp.setDefaultCl廪强钝可墁玖呼擞oseOperation(EXIT_ON_CLOSE);&&&nbsp.getText()&&Add&quot。//还可以在新建自定义jDialog类时;&&&nbsp,&&&&&&&&&&&&&&&{&&&&&&});&initPanel()&2)).JTextF电话;+&&&&&cancel&private&&&&=&getY()&));&JButton&&JTextField(10);dialog&JLabel(&&=&&GridLayout(3;&&&&&JButton&nbsp,传入jFrame的引用;&&&&&&&&&&nbsp.&&&&&{&&nbsp.&&&private&&{&+&&&&&&&&}&&&&nbsp.add(phone);final&&&nbsp.add(cancel);public&&&姓名;{&&&&private&nbsp。//我是用内部类的形式解决该问题的;new&&&&}&&nbsp.CENTER);initPanel();JButton(&&&);BorderL;&&import&&&&&});&&&&&&&&&nbsp.dispose();&&&&&nbsp.setSize(300;&&&textA&&&&);&&&&&&&&new&&&&&&&&&&&void&openDialog()&nbsp.setLayout(new&ActionListener()&&&&public&nbsp.getText()&&&textA&&&&nbsp.e)&nbsp,如何从jDialog中获取jFrame的引用;FrameTest()&});=&200).add(save):&);&&&&&import&new&&&&&&import&=&&save&&&&JTextField(10);new&&&&&&new&&nbsp.&static&BorderL&&openDialog();public&&&&&&&&&&&JDialog(&nbsp.addActionListener(new&&&&nbsp.swing.add(new&dialog.setSize(400;&&&&nbsp.add(name);&nbsp.JLnew&&nbsp,&+&&&&&&&&&&&ActionListener()&&&&&&&&&&nbsp.BorderL&&{&JButton(&quot,&&&extends&&&&+&&&ActionListener()&&FrameTest();name&&&&&&&JFrame&&import&&&&&&void&&nbsp.setVisible(true);&nbsp.GridL&&&&&&nbsp.swing.{&&&&=&&&nbsp.&}&nbsp.&actionPerformed(ActionEvent&&nbsp,&&nbsp,&nbsp.JTextAvoid&nbsp.awt.add(}&&nbsp。而且直接操作jFrame的组件;&nbsp。import&textArea&&nbsp
jdialog的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁JFrame与JApplet的一点区别
JFrame是一个框架JFrame
包含一个 JRootPane
作为其惟一的子容器。根据规定,根窗格所提供的内容窗格应该包含
所显示的所有非菜单组件。并且不能忘记设置setDefaultCloseOperation(JFram.EXIT_ON_CLOSE);和setSize(withi,height);而对于JApplet则需要实现public
init(){}函数,即里面有相应的动作,然后再加上applet.init();和applet.start();。两者都需要方法xxx.getContentPane().add(相应的组件)来获取相应的面板容器并添加相应的组件到容器中去。
在JAVA中,组件放置在窗体上的方式可能与你使用过后任何GUI系统都不相同。首先,它完全基于代码没有用来控制组件布置的“资源”。第二,组件旋转在窗体上的方式不是通过绝对坐标控制,而是由“布局管理器”根据组件加入的顺序决定其位置。使用不同的布局管理器组件的大小、开关和位置将大不相同。此外,布局管理器还可以适应applet或应用程序窗口的大小、所以如果窗口的尺寸改变了,组件的大小、形状和位置也能够做相应的改变。
&  JApplet JFrame JWindow
JDialog都可以通过getContentPane()得到一个容器(Container),用来包含和显示组件。Container中有一个称为setLayout()的方法,可以通过这个方法来选择不同的布局管理器。其他的类,比如JPanel,可以直接包含和显示组件,所以可以不通过内容面板,就可以直接设置布局管理器。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。JFrame实现JDialog的效果,实现模式窗口 - 下载频道
- CSDN.NET
&&&&JFrame实现JDialog的效果,实现模式窗口
JFrame实现JDialog的效果,实现模式窗口
JFrame实现JDialog的效果 ,实现模式窗口
若举报审核通过,可奖励20下载分
被举报人:
huzilonghu
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行JDialog增强型对话框窗口
JDialog增强型对话框窗口
  还记得我们最初做的“关于”功能吗?虽然“关于”对话框能很好工作,但当你要写比较长或者是比较复杂的内容时,就会感觉到JOptionPane有些捉襟见肘.
  让我们用JDialog来制作漂亮的对话框吧!JDialog和JFrame一样同属顶层容器控件,使用方法JPanel几乎一样。下面先来看看我们的第一个JDialog小程序吧:
public class AboutDialog extends JDialog
& JLabel about = new
JLabel("关于:这可是JAVA写的连连看哦!");
 public AboutDialog(JFrame frame) {
&&& this.setTitle("About");
&&& this.setSize(320, 200);
about.setHorizontalAlignment(SwingConstants.CENTER);
&&& this.getContentPane().add(about,
BorderLayout.CENTER);
&&& this.show();
  然后将主程序中的“关于”部分的代码修改如下:
if (e.getSource() == about) {
& new AboutDialog();
  现在运行看看,是不是大气多了?当然,现在的样子仍稍嫌简陋了一点,所以还得再接再励。这里告诉大家一点小技巧:如果在程序中加入了JDialog.setDefaultLookAndFeelDecorated(true),对话框窗口的显示就会使用Java的外观风格,会比原来的对话窗口漂亮得多!需要注意的是,当使用了Java观感后,对话框右上角的关闭按钮就不会显示出来,因此得自己加上“关闭”按钮及关闭窗口的事件处理。
  自己动手试试,你能做出和我一样漂亮的对话框吗?
  模态窗口和非模态窗口
  在Windows中,我们常常会接触到模态窗口和非模态窗口。所谓模态窗口,就是指当前窗口弹出时,只有关闭此窗口才能继续进行其它窗口的操作。非模态窗口则是即使不关闭当前的窗口,也可以对后面的的窗口进行操作。最典型的例子就是Windows
中自带的“记事本”软件,“字体”功能就是模态窗口,而“查找”功能就是非模态窗口了。
  在JDialog中,我们可以用JDialog(Frame owner, boolean
modal)来指定对话框的模态或非模态状态。
  在控件上使用HTML标签
  大多数的Swing控件可以显示文字,对于这些控件,在一般情况下,只能使用单一字体、单一样式、单一颜色来显示。比如说,当要在标签JLabel控件上显示文件时,我们会用到JLabel的setFont()、setForeground()等方法,并且代码看起来会是这样:
label = new JLabel("A label");
label.setFont(new Font("Serif", Font.PLAIN, 14));
label.setForeground(new Color(0xffffdd));
  如果想在某段文字中使用不同的字体或颜色,其实可以使用HTML格式。在控件上使用HTML格式确实是一件令人兴奋的事情,我们只需要简单的将&html&标记写在控件中就行了,比如可以这样创建一个JLabel:
JLabel label = new
JLabel("&html&&font
color=red&RED&/font&&/html&");
  然而,直到JDK
1.4.2,并非所有的控件都可以使用HTML格式,在SUN的官方文档中提到:支持HTML格式的控件只有按钮、菜单、标签、提示、标签面板、树和表格。无论如何,这都是一个非常好用的特性!
  强劲的编辑器控件JEditorPane
  上面说到了HTML格式,HTML格式使得Swing控件显示文字的能力增加了不少,然而,如果要进行图文混排的显示,HTML格式也无能为力了。
  网络让世界变得精彩,互联网中各式各样的网站都与HTML分不开,就算不懂HTML,也可以使用Word、FrongPage等工具制作出漂亮的网页来。因此,如果能够将网页在控件中显示出来,那就解决了不少问题。
  JEditorPane是Swing中一款非常强大的文本编辑控件,如果想完全了解JEditorPane的用法,绝不是简简单单的一两篇教程能说讲完的,大家如果有兴趣,可以看看Java安装目录下demo\jfc\Stylepad下的演示程序,它可以告诉你JEditorPane有多么强大。
在JEditorPane中,我们完全可以将HTML文件(或写字板等文字处理软件生成的RTF格式的文件)直接显示出来,虽然它还不能完整地支持HTML的所有标准。因此,大家在制作页面的时候,尽可能的只使用HTML3.2标准的语法而不要使用CSS、JavaScript等特性。
  如何让JEditorPane显示HTML文件呢?最简单的做法就是:
JEditorPane EditorPane= new JEditorPane();
URLClassLoader urlLoader =
(URLClassLoader)this.getClass().getClassLoader();
URL url = urlLoader.findResource("doc/help.htm");
EditorPane.setEditable(false);
EditorPane.setPage(url);
  我们首先使用setEditable(false)语句使JEditorPane中的内容不可编辑,然后再使用setPage(url)方法载入需要显示的HTML文件。
  不仅如此,JEditorPane还可以处理HTML中的链接,做法也非常简单。首先,要使JEditorPane能够响应点击链接的事件,我们需实现HyperlinkListener接口。然后,我们为JEditorPane添加超链接的监听:
HelpPane.addHyperlinkListener(this);
  最后,我们再实现监听链接事件的处理:
public void hyperlinkUpdate(HyperlinkEvent e)
& if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
&&& JEditorPane pane = (JEditorPane)
e.getSource();
&&& if (e instanceof HTMLFrameHyperlinkEvent)
&&&&& HTMLFrameHyperlinkEvent evt =
(HTMLFrameHyperlinkEvent)
&&&&& HTMLDocument doc = (HTMLDocument)
pane.getDocument();
doc.processHTMLFrameHyperlinkEvent(evt);
&&& } else {
&&&&& try {
pane.setPage(e.getURL());
&&&&& }
&&&&& catch (Throwable t)
t.printStackTrace();
&&&&& }
&&& }
  只需要简单的三个步骤,我们就可以享受JEditorPane带来的处理HTML页面的好处,做出漂亮的帮助文档了
改变鼠标光标的样式
  目前为止,我们在程序界面上已经花了很多功夫,界面也慢慢变得漂亮起来。不过,装饰永无止境,下面就来谈谈如何改变鼠标光标的样式吧。实际上,createCustomCursor(Image
cursor, Point hotSpot, String
name)就能满足要求。其中,cursor是要设置为光标的图片,hotSpot是图片显示在实际光标位置的位移,name是给光标起的名字。现在挑选一张自己喜欢的图片来作为程序的光标吧。
  如果仍然觉得意犹未尽,那么还可以制作动画光标。首先准备好一系列图片,然后使用Timer()方法来设置一个定时器,每隔一段时间就变换光标的图片,这样,光标不就动起来了?
  声音是Swing的一部分吗?回答是否定的。虽然声音不属于Swing,但为了让我们的游戏更加完美,还是一起来看看怎样处理声音吧。
  Java自出道之日就能处理声音,但那时只能在Applet中进行处理,即便如此,声音的格式也只能是少见的AU格式。幸好,SUN意识到了这个问题,在JDK1.3之后,Java就提供了专门的声音处理包来满足声音处理的需求。
  Java支持MIDI和WAV格式的声音文件,javax.sound.midi和javax.sound.sampled这两个包就是用来处理MIDI和WAV文件的。MIDI格式优点在于文件小,缺点是只能保存乐曲而无法包含波形声音信息,WAV格式虽然能包含波形声音信息,可惜文件太大。因此,我们可以将MIDI作为游戏背景音乐,WAV作为音效。
  由于对WAV格式文件的操作和MIDI格式文件的操作十分相似,他们的区别仅在于使用的包不同,因此,我们就以处理MIDI格式的文件为例子吧:
// 读取midi文件
public void loadMidi(String filename) throws IOException,
InvalidMidiDataException {
& URLClassLoader urlLoader =
(URLClassLoader)this.getClass().getClassLoader();
& URL url = urlLoader.findResource(filename);
& sequence = MidiSystem.getSequence(url);
& //sequence保存着MIDI的音序结构
// 播放sequence
public void play() {
& if (isPlaying) { // 如果已经在播放,返回
& try {
&&& sequencer = MidiSystem.getSequencer();
&&& sequencer.open();
&&& sequencer.setSequence(sequence); //
加载sequence
&&& sequencer.addMetaEventListener(this); //
添加事件处理
& } catch (InvalidMidiDataException ex)
& } catch (MidiUnavailableException e)
& // Start playing
& thread = new Thread(this);
& thread.start();
public void run() {
& Thread currentThread = Thread.currentThread();
& while (currentThread == thread
&& !isPlaying)
&&& // 当MIDI没有播放的时候,播放MIDI音乐
&&& sequencer.start();
&&& isPlaying =
&&& try {
&&&&& thread.sleep( 1000l );
&&& }
&&& catch (InterruptedException ex)
&&& }
  以上是处理MIDI文件的主要代码,代码并不是很长,却已经能很好地完成我们需要的功能了。当然,如果你还不满意,Java也提供了多种方法让你对MIDI格式的文件进行音调、频率的改变。需要提醒的是,声音处理一定要做为一个单独的线程来进行,究其原因嘛,还是大家自己思考一下了。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 jframe 的文章

 

随机推荐