为辅助回答,张贴以下我编写的简易计算器代码,回答问题可不看.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分) 再次补充:顶者有分!!!!初学者,感激不尽.
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分) 再次补充:顶者有分!!!!初学者,感激不尽.
{
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);//關閉的時候停止播放
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.play();
这个是Applet里的,在Application中不能用.
还可用Player,它在javax.media包中,需要下载JMF.