2

Java 6でアプレットを作成する必要があります。640*480ピクセルで、下部にいくつかのボタン、スクロールバー、ラベルが付いたツールバーがあります。私が考えることができる最善の方法は、コントロールを使用してグラフィックを描画する場所として、領域(コントロールを含む)と残りの領域をnullにすることBorderLayoutでしBorderLayout.SOUTHGridBagLayoutBorderLayout私はswingを使用しないリソースをオンラインで見つけることができず、swingが何をしているのか、またはそれをawtコードに変換する方法を推測するためのswingについて何も知りません。これが私が今いるところです。init()レイアウトマネージャーが開始する場所であるため、コードはで突然終了します。助けてくれてありがとう。さらに詳しい情報が必要な場合は、ここにあるものを教えてください。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Bounce extends Applet implements ActionListener, AdjustmentListener
{
    private static final long serialVersionUID = 1L;
    private Graphics page;
    //buttons
    String shapeButtonText = "Square";
    Button shape = new Button(shapeButtonText);
    Button quit = new Button("Quit");
    Button run = new Button("Run");
    Button tail = new Button("Tail");
    Button clear = new Button("Clear");

    //labels
    Label speedLabel = new Label("Speed", Label.CENTER);
    Label sizeLabel = new Label("Size", Label.CENTER);

    //scrollbars
    private final int barHeight = 20;
    private final int SLIDER_WIDTH = 10;
    private final int MAXSPEED = 110;
    private final int MINSPEED = 0;
    private final int UNIT_INC = 1;
    private final int BLOC_INC = 10;
    private final int MAX_SIZE = 110;
    private final int MIN_SIZE = 10;
    Scrollbar speedBar = new Scrollbar(Scrollbar.HORIZONTAL, MINSPEED, SLIDER_WIDTH, 0, MAXSPEED);  
    Scrollbar sizeBar = new Scrollbar(Scrollbar.HORIZONTAL, MIN_SIZE, SLIDER_WIDTH, 0, MAX_SIZE);


    //methods   
    public void init()
    {
        //set up objects
        //speed scroll bar
        speedBar.setUnitIncrement(UNIT_INC);
        speedBar.setBlockIncrement(BLOC_INC);
        speedBar.setValue(MAXSPEED/2);

        //size scrollbar
        sizeBar.setUnitIncrement(UNIT_INC);
        sizeBar.setBlockIncrement(BLOC_INC);
        sizeBar.setValue(MAX_SIZE/2);

        //draw the window
        BorderLayout window = new BorderLayout();
        GridBagLayout toolbar = new GridBagLayout();
        //?
    }

    public void start()
    {
    }

    public void run()
    {
    }

    public void actionPerformed(ActionEvent e)
    {
    }

    public void adjustmentValueChanged(AdjustmentEvent e)
    {
    }

    public void stop()
    {
    }

    public void destory()
    {
    }
}
4

1 に答える 1

5

いくつかのことを明確にしましょう。LayoutManagersは、(、、、、など)によって使用され、内のContainerコンポーネントの位置とサイズを計算します。これは、「ネスト」について話すのは正しくないことを意味します。一方、sを互いに入れ子にして、それぞれに独自のを与えることができます。これがあなたのやりたいことだと思います。FramePanelAppletContainerLayoutManagerContainerLayoutManager

不自然な例でこれを説明しましょう:

public class MyGUI {
    public static void main(String[] args) {
        Frame f = new Frame("Layout Example");
        Panel mainPanel = new Panel(new BorderLayout());
        f.add(mainPanel);

        Panel toolBar = new Panel(new FlowLayout());
        toolBar.add(new Button("Button 1"));
        toolBar.add(new Button("Button 2"));
        mainPanel.add(tollBar.NORTH);

        Panel statusBar = new Panel(new FlowLayout());
        statusBar.add(new Label("Status"));
        mainPanel.add(statusBar);

        f.pack();
        f.show();
    }
}

Panelごとに新しいものを作成する必要があることに注意してくださいLayoutManager。むしろ、Panel作成するそれぞれにが必要LayoutManagerです。また、この例は、、、、、、およびに置き換えることFrameJFrame、AWTからSwingに簡単に変更できます。PanelJPanelButtonJButtonLabelJLabel

ps上記のコードはテストされていません。ただし、ここに含まれる概念を説明する必要があります。

于 2012-10-14T21:52:40.957 に答える