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 に答える