2013-05-12 117 views
0

嗨,我是最后一年的工程学生,尽管我已经学习了java,但我的应用知识还很简单。但是,我必须为我的项目使用Java。这是我写前端代码:在AWT中添加一个滚动条/滚动条到框架

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(新的ScrollPane())等,但他们都没有工作。请帮帮我!

+0

检查了这一点http://www.coderanch.com/t/533808/GUI/java/add-Scrollbar-Frame-AWT – 2013-05-12 16:17:19

+0

这是如何添加一些东西到中心或南方,而不是一个字符串:http://docs.oracle.com/javase/7/docs/api/java/awt/Container.html#add%28java.awt.Component ,%20java.lang.Object%29 – 2013-05-12 16:19:58

+0

1)请在句子开头添加大写字母。还要为单词I使用大写字母,并使用JEE或WAR等缩写词和首字母缩略词。这使人们更容易理解和帮助。 2)为什么编写一个小程序?如果由于规格而到期。由老师,请参考[为什么CS老师应该停止教Java applets](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/)。 3)使用Swing而不是AWT。在[Swing extras over AWT]上看到这个答案(http://stackoverflow.com/a/6255978/418556)有很多很好的理由放弃使用AWT组件。 – 2013-05-12 16:25:30

回答

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(); 

} 

} 

可能,这将是有益的你:)

+0

嗨谢谢你的答案,但不会影响其他框架? – ppra 2013-05-12 16:30:04

+0

它只会影响{frame}对象,如上例所示。 – 2013-05-12 16:33:43