0

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

  1. 画面分为3部分
  2. 最上面的部分将有一组按钮和文本框
  3. 中间部分和底部将显示不同的图像
  4. 每次运行程序时,这些图像的大小可能会有所不同(因此需要滚动条以防图像超出屏幕)

到目前为止,我已经成功地对屏幕进行了分区,并为每个部分创建了单独的面板,并在其中添加了相应的组件。

问题:

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

我尝试使用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);
   }
}}
4

1 回答 1

4

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

更多提示

  1. “我以前从未使用过小程序。” 这是不祥的,因为小程序比框架更难开发和部署。我建议首先在 JFrame 中开发它(然后使用Java Web Start从链接启动框架)。只有在看到使用 JWS 启动的框架之后,您才应该考虑使用小程序。到那个阶段,所需的任何“转换”都会简单得多。
  2. 永远不要调用setSize(..)小程序。大小在 HTML 中。
  3. 除非必要,不要混合使用 Swing 和 AWT 组件,使用所有 Swing。
  4. 设置任何组件的大小(首选、最大或最小)通常不是一个好主意。
  5. 请了解类、方法和属性名称的常见Java 命名约定(特别是名称的大小写)并始终如一地使用它。
于 2012-12-10T04:15:54.090 回答