首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

GUI 简单提问 顶者有分.解决办法

2012-01-21 
GUI 简单提问 顶者有分.为辅助回答,张贴以下我编写的简易计算器代码,回答问题可不看.importjava.awt.*imp

GUI 简单提问 顶者有分.
为辅助回答,张贴以下我编写的简易计算器代码,回答问题可不看.

import   java.awt.*;
import   javax.swing.*;
import   java.awt.event.*;
public   class   SmpCountEquipment2   extends   JFrame   implements   ActionListener   {

                  private   TextField   Operation1,Operation2,End;
                  private   Button   button1,button2,button3,button4;
                  private   Label   label1,label2,label3;

            SmpCountEquipment2(){
            super( "简易计算器 ");
            setJLabelJTextFeild();
            setJLabelJTextFeild2();
            setLayout(new   FlowLayout(FlowLayout.LEFT,5,5));
            }

            public   void   setJLabelJTextFeild(){
                        Container   c=getContentPane();
                        JPanel   panel1=new   JPanel();

                        label1=new   Label( "                                                         操作数 ");
                        Operation1=new   TextField(20);
                        label2=new   Label( "                                                         操作数 ");
                        Operation2=new   TextField(20);
                        label3=new   Label( "                                                         结果 ");
                        End=new   TextField(20);
                        GridLayout   g=new   GridLayout(3,3,50,50);
                        panel1.setLayout(g);
                        panel1.add(   label1);
                        panel1.add(Operation1);
                        panel1.add(label2);
                        panel1.add(Operation2);
                        panel1.add(label3);
                        panel1.add(   End);


                        panel1.setSize(100,400);
                        panel1.setBackground(Color.orange);
                        c.add(panel1);
            }
              public   void   setJLabelJTextFeild2(){
                Container   a=getContentPane();
                  JPanel   panel2=new   JPanel();
              button1=new   Button( "+ ");
                button1.addActionListener(this);
                button1.setBounds(0,-78,100,30);
                button2=new   Button( "- ");
                button2.addActionListener(this);
                button2.setBounds(0,-38,100,30);
                button3=new   Button( "* ");
                button3.addActionListener(this);
                button3.setBounds(0,2,100,30);
                button4=new   Button( "/ ");
                button4.addActionListener(this);
                button4.setBounds(0,42,100,30);
                panel2.setLayout(null);
                panel2.add(button1);
                panel2.add(button2);
                panel2.add(button3);
                panel2.add(button4);
                a.add(panel2);
              }
              public   void   actionPerformed(ActionEvent   e){

                      String   n1=Operation1.getText();
                      String   n2=Operation2.getText();
                      int   k1   =Integer.parseInt(n1);
                      int   k2   =Integer.parseInt(n2);

                      if(e.getActionCommand().equals( "+ ")){
                              int   k3=k1+k2;
                              String   k4= " "+k3;
                            End.setText(k4);
                      }
                    if(e.getActionCommand().equals( "- ")){


                              int   k5=k1-k2;
                              String   k51= " "+k5;
                            End.setText(k51);
                      }
                    if(e.getActionCommand().equals( "* ")){
                                                    int   k6=k1*k2;
                                                    String   k61= " "+k6;
                                                  End.setText(k61);
                      }
                  if(e.getActionCommand().equals( "/ ")){
                                int   k7=k1/k2;
                              String   k71= " "+k7;
                            End.setText(k71);
                      }

              }
            public   static   void   main(String[]   args){
                SmpCountEquipment2   jframe=new   SmpCountEquipment2();
                jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                jframe.setSize(510,220);
                jframe.setResizable(false);
                jframe.setVisible(true);
        }

}
问题:<一>:不取消布局管理器,就不能设置组件大小和方向?(5分)
   <二>:在以上代码中我设置了2个面板,框架是FlowLayout布局,为什么2个面板会重合?(2个面板的颜色不一样,故知)(15分)
   <三>:如何在框架中添加音乐?具体结合代码说明.(40分)  

再次补充:顶者有分!!!!

初学者,感激不尽.

[解决办法]
ding
[解决办法]
只能看着别人拿分,自己解决不了呀,学习
[解决办法]
private void playSound()
{
try
{
FileInputStream fileau = new FileInputStream(new File( "filename.wav ")); //filename.wav是带路径的.绝对或者相对
AudioStream as = new AudioStream(fileau);
AudioPlayer.player.start(as);
} catch (Exception e)
{
e.printStackTrace();
}
}


==================================
AudioPlayer.player.stop(as);//關閉的時候停止播放
------解决方案--------------------


UP
[解决办法]
问题:<一>:不取消布局管理器,就不能设置组件大小和方向?(5分): Java提供了那么几种布局管理方式,但如果想随意更改组件的大小,方向,可以把布局设置为null,然后定义组件的绝对坐标来布局.

   <二>:在以上代码中我设置了2个面板,框架是FlowLayout布局,为什么2个面板会重合?(2个面板的颜色不一样,故知)(15分): 这两个面板是紧贴着另一个的,看上去是重合了,可能会与实际有些出入,不过可以用其他的布局管理方式来解决这个问题.

上面两个问题,可能通过几次的面板组合,其他的布局管理器通过复杂的处理来实现,不过setLayout(null)是最简单,但是当窗口大小变化时,会影响组件与窗口大小的不一致,一般用于窗口大小固定的情况下.

   <三>:如何在框架中添加音乐?具体结合代码说明.(40分): 背景音乐要用重新建一个线程,用于播放背景音乐,这样,播放背景音乐的时候,并不影响你进行计算.播放有代码楼上的已经给出,把其加入一个线程即可.

[解决办法]
ding
[解决办法]
学习一下
[解决办法]
AudioStream 在哪个包里啊 为什么我在api里查不到呢?
[解决办法]
你的代码太长了,没看,不过要添加声音,这样就行了:

AudioClip mySong=getAudioClip(getDocumentBase(), "Songs/song.au ");
mySong.play();

AudioClip为java.applet中的一个接口;
[解决办法]
学习了。。。
[解决办法]
学习一下呀~~
[解决办法]
顶下
[解决办法]
《一》:不取消布局管理器,就不能设置组件大小和方向?
答:可以用GridBagLayout类网格袋布局,它把窗体分成几份,每个组件可以占几列或者几行,这部分可以参考jdk文档。
<二>:在以上代码中我设置了2个面板,框架是FlowLayout布局,为什么2个面板会重合?
答:
类 FlowLayout
流布局用于安排有向流中的组件,这非常类似于段落中的文本行。
说白了,就是一行接着一行,一行玩了,转到下行,这个重叠的问题可以通过调整窗口大小来调,不过这样不好,可以通过:
用网格布局gridlayout类,再将
panelMain= new JPanel(new GridLayout(2,1));//2行1列(主面板)
this.setContentPanel(panelMain);
panelMain.add(panel1);//将两个面板加入主面板中
panelMain.add(panel1);

《三》:如何在框架中添加音乐?具体结合代码说明.
答:
sound=getAudioClip(getCodeBase(), "voice.wav ");
sound.play();
这些上面大虾们的说的很清楚了。使用线程是一个方法,也可以直接把它放在init()中,让它加在程序时直接运行,
但建议用线程的方法,这是编程的好习惯。

[解决办法]
sound=getAudioClip(getCodeBase(), "voice.wav ");
sound.play();
这个是Applet里的,在Application中不能用.
[解决办法]
要在Application中播放声音可用AudioStream.它在sun.audio包里,是个私有包,在API里查不到.
还可用Player,它在javax.media包中,需要下载JMF.

热点排行