面向对象程序设计实验报告 java实验报告 图形用户界面
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图形用户界面设计
实验1
Nested Panels
The program Nested Panels.java is from Listing 3.8 of the text. Save the program to your directory and do the following:
pile and run the program. Experiment with resizing the frame and observe the effect on the components.
运行程序后出现如下界面:
改变窗口的大小,观察到:(见下图)
(1)两个子面板one和two的尺寸都保持不变。
(2)蓝色的主面板随着窗口的变大而扩展。
(3)蓝色面板变长,one和two子面板都不变,当蓝色面板变宽时,两个子面板随着它移动,并保持居中状态。
(4)缩小窗口,根据流式布局的形式,two子面板因为位置容不下,自动被放在下一行的位置。
2. Modify the program by adding a third subpanel that is twice as wide, but
the same height, as the other two subpanels. Choose your own label and color for the subpanel (the color should not be red, green, or blue). Add the panel to the primary panel after the other two panels.
修改的代码如下:
JPanel subPanel3 = new JPanel() ;
subPanel3.setPreferredSize (new Dimension(300, 100)); ubPanel3.setBackground (Color.red);
JLabel label3 = new JLabel ("Three");
subPanel3.add (label3);
primary.add (subPanel3);
3. Compile and run the modified program. Again, experiment with resizing the frame and observe the effect on the components.
改变窗口的大小,3个子面板变化情况跟第一步实验的类似。
4. Now add a statement to the program to set the preferred size of the primary panel to 320 by 260. (What would be the
purpose of this?). Compile and run the program to see if anything changed.
代码修改:
primary.setPreferredSize (new Dimension(320, 260));
这一步是运行时让主面板的大小固定为宽度320,高度260。
5. Now add another panel with background color blue and size 320 by 20. Add a "My Panels" label to this panel and
then add this panel to the primary panel before adding the other panels. Compile and run the program. What was the
effect of this panel?
代码如下:
JPanel subPanel4 = new JPanel() ;
subPanel4.setPreferredSize (new Dimension(320, 20)); subPanel4.setBackground (Color.blue);
JLabel label4 = new JLabel ("MyPanel");
subPanel4.add (label4);
……………………………
primary.add (subPanel4);
primary.add (subPanel1);
primary.add (subPanel2);
primary.add (subPanel3);
因为蓝色主面板的宽320,由于流式布局,一个一个把面板加到主面板,MyPanel已经占据了320,所以one面板只能去到下一行。同理得Two,Three 的布局形式。
6、用可重用的思想编写该界面:
package lab3;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class NestedPanels1 extends JFrame
{
//-------------------------------------------------------- //Presents two colored panels nested within a third.
//-------------------------------------------------------- JPanel subPanel1,subPanel2,subPanel3,subPanel4,primary;
JLabel label1, label2, label3,label4;
public NestedPanels1(){
label1 = new JLabel ("One");
label2 = new JLabel ("Two");
label3 = new JLabel ("Three");
label4 = new JLabel ("MyPanel");
subPanel1 = new JPanel();
subPanel2 = new JPanel();
subPanel3 = new JPanel() ;
subPanel4 = new JPanel() ;
primary = new JPanel();
subPanel1.setPreferredSize(new Dimension(150, 100));
subPanel2.setPreferredSize(new Dimension(150, 100));
subPanel3.setPreferredSize(new Dimension(300, 100));
subPanel4.setPreferredSize(new Dimension(320, 20));
primary.setPreferredSize (new Dimension(320, 260));
subPanel1.setBackground (Color.green);
subPanel2.setBackground (Color.red);
subPanel3.setBackground (Color.red);
subPanel4.setBackground (Color.blue);
primary.setBackground (Color.blue);