在AWT中添加滚动条/滚动窗格到框架

时间:2013-05-12 16:15:34

标签: java awt frame scrollpane

嗨,我是最后一年的工科学生,虽然我学过java,但我对其应用的了解还很不成熟。但是,我必须使用java作为我的项目。这是我写的前端代码:

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


    public class ex extends Applet 
    {
       static Frame f;
       DrawCanvas can;
       SetControls cont;

    public void init() 
    {
           can=new DrawCanvas();
           setLayout(new BorderLayout());
           add("Center", can);
           add("North", cont = new SetControls(can, f));
    }

            public void destroy() 
    {
           remove(cont);    
           remove(can);
        }

        public void start() 
    {
           cont.setEnabled(true);
        }

            public void stop() 
    {
           cont.setEnabled(false);
        }

            public void processWindowEvent(AWTEvent e) 
    {
           if (e.getID() == Event.WINDOW_DESTROY) 
        {
                        System.exit(0);
        }
        }

        public static void main(String args[]) 
    {
            f = new Frame("Title");
            ex fe = new ex();

            fe.init();
            fe.start();

           f.add("Center", fe);
           f.setSize(1500,1500);

           f.show();
        }
}

    class DrawCanvas extends Canvas
{
    //declaration of variables
    public DrawCanvas()
    {
    }

    public void paint(Graphics g)
    {
        //various flags are set for functions to be called and what shud 
                //be drawn when those functions are called

    }   
}


    class SetControls extends Panel implements ActionListener
{
       TextArea text1;
       TextField txt;
       Button load, init1, cluster,exit;
       Label head, vig;

           //declaration of variables used

           FileDialog fc;
       String fname;
       Frame f;
       DrawCanvas canvas;

       public SetControls(DrawCanvas can, Frame f) 
    {
             //initialization of variables used

             canvas = can;
            this.f = f;

           head = new Label("Clustering of Genes:");
           cluster = new Button("Cluster Now");
           load = new Button("Load");
           init1 = new Button("Filter");
           exit = new Button("Exit");
           txt = new TextField(2);
           text1 = new TextArea(5,80);
           vig = new Label("Parameter");


           load.addActionListener(this);
           init1.addActionListener(this);
               txt.addActionListener(this);
               cluster.addActionListener(this);
           exit.addActionListener(this);


           add(head);  
           add(load);
           add(init1);
           add(text1);
           add(vig);
           add(txt);
           add(cluster);
           add(exit);

    }

public void actionPerformed(ActionEvent ae) 
    {
    String str = ae.getActionCommand();
    System.out.println("Command: " + str);

    if(str.equals("Load"))
        {
        text1.setText("Loading microarray data file...");

        fc = new FileDialog(f, "Choose a file", FileDialog.LOAD);
        fc.setDirectory(".");
        fc.setVisible(true);
        fname = fc.getFile();
        //function call to read the file    
        text1.setText("Input Data File Loaded: " + fname);      
        }
    else if((str.equals("Filter")||str.equals("Cluster Now")))  
        {
        if(str.equals("Filter"))
            {
            //function calls and setting of text are
            }   
        else
            {
            //function calls and setting of text area
                }   

        } 


    else{
        //call close function when exit is pressed 
        }           
    }
}

我知道你在想我为什么使用AWT而不是挥杆,但此刻我对AWT感到更舒服。到目前为止,代码工作得很好。但问题是,当我按下其中一个按钮时,显示的信息很多,超出了框架;所以我想添加滚动条或滚动条,以便我可以向下滚动以查看其余信息。我尝试了很多东西,比如f.add(new ScrollPane())等,但是没有一个能正常工作。请帮我!

1 个答案:

答案 0 :(得分:2)

import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Scrollbar;

public class AWTScrollbar {

public static void main(String[] args) {

    Frame frame = new Frame("Scrollbar");

    FlowLayout layout = new FlowLayout();

    frame.setLayout(layout);

    Label label = new Label("Scrollbar");

    frame.add(label);

    Scrollbar scrollbar = new Scrollbar(Scrollbar.VERTICAL, 0, 1, 0, 255);

    frame.add(scrollbar);

    frame.setVisible(true);

    frame.pack();

}

}

这可能会对你有用:)