在单个小程序中显示多个图像

时间:2012-12-10 04:06:09

标签: java image swing applet japplet

我必须为项目构建一个小型Java小程序。我之前从未使用过applet。因此,我对可用的各种内置功能了解不多。这个小程序的布局如下:

  1. 屏幕分为3部分
  2. 最重要的部分将有一组按钮和文本框
  3. 中间部分和底部将显示不同的图像
  4. 每次运行程序时,这些图像的大小可能会有所不同(因此,如果图像离开屏幕,则需要滚动条)
  5. 到目前为止,我已成功分割屏幕并为每个部件创建单独的面板,并在其中添加相应的组件。

    问题:

    底部图像不完全可见。并且当每个图像不适合面板时,也不会出现滚动条。

    我尝试使用setSize()setMinimumSize()方法,但它不会在输出中产生任何变化。你可以帮我解决上面的问题吗?

    这是我到目前为止所做的事情:

    /*<applet code=DOSlayout.java width=400 height=400>
    </applet>*/ 
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class DOSlayout extends JApplet implements ActionListener {
    
        Button ViewButton;
        Panel1 Top;
        Panel2 LeftSide;
        Panel3  RightSide;
        Label l1,l2,l3;
    
        Image img;
    
        public void init() {
    
            setSize(400,400);
            setLayout(new BorderLayout());
    
            Top = new Panel1();
            LeftSide = new Panel2();
            RightSide = new Panel3();
    
            Top.setSize(getSize().width, getSize().height/3);
            LeftSide.setSize(getSize().width,getSize().height/3); 
            RightSide.setSize(getSize().width,getSize().height/3);
    
    //RightSide.setMinimumSize (new Dimension(400, 10000));
    
            add(Top, BorderLayout.NORTH);
            add(LeftSide, BorderLayout.CENTER);
            add(RightSide, BorderLayout.SOUTH);
    
            ViewButton = new Button("View");
    
    
            l1 = new Label("North");
            l2 = new Label("East");
            l3 = new Label("West");
    
    
            Top.add(ViewButton);
    
    
            Top.add(l1);        
            //LeftSide.add(l2);
            //RightSide.add(l3);
    
            ViewButton.addActionListener(this);     
        }
    
    
        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
    
        }
    
    class Panel1 extends JPanel {
    
    Panel1() {
    super();
    }
    
    public void paint(Graphics g) {
    }
    
    }
    
    class Panel2 extends JPanel {
    
    Panel2() {
    super();
    }
    
       private Image img;
    
       public void init()
       {
          img = null;
       }
       public void loadImage()
       {
          try
          { 
             img = getImage(getCodeBase(), "input1.png");
          }
          catch(Exception e) { }
       }
       public void paint(Graphics g)
       {
          if (img == null)
             loadImage();
          g.drawImage(img, 0, 0, this);
          //g.drawImage(img,0,0,(int)getBounds().getWidth(), (int)getBounds().getHeight(),this);
       }
    
    }
    
    class Panel3 extends JPanel {
    
    Panel3() {
    super();
    }
    
       private Image img;
    
       public void init()
       {
          img = null;
    //setSize(400,400);
       }
       public void loadImage()
       {
          try
          { 
             img = getImage(getCodeBase(), "input2.png");
          }
          catch(Exception e) { }
       }
       public void paint(Graphics g)
       {
          if (img == null)
             loadImage();
          g.drawImage(img, 0, 0, this);
    //g.drawImage(img,0,0,(int)getBounds().getWidth(), (int)getBounds().getHeight(),this);
       }
    }}
    

1 个答案:

答案 0 :(得分:4)

ImageViewer中使用的容器开始。它将图像集中在滚动窗格内,其滚动条可靠地显示。

进一步提示

  1. “我以前从未使用过小程序。”这是不祥的,因为小程序更难以开发&amp;部署比帧。我建议首先在JFrame中开发它(然后使用Java Web Start从链接启动框架)。只有在看到使用JWS启动的帧之后,才应考虑使用applet。到那个阶段,所需的任何“转换”都会简单得多。
  2. 不要在小程序中调用setSize(..)。大小在HTML中。
  3. 除非必要,否则不要混用Swing和AWT组件,使用所有Swing。
  4. 设置任何组件的大小(首选,最大或最小)通常是个坏主意。
  5. 请了解课程,方法和方法的常见Java naming conventions(特别是用于名称的情况)属性名称&amp;一贯地使用它。