我怎么能编程这个ui盒子

时间:2010-04-15 23:27:35

标签: java visual-studio excel vba

以何种方式编程。

一个UI框,显示最小值和最大值之间的随机数,持续2秒,然后显示空白2秒,然后显示另一个随机数2秒,然后显示10个seonds的空白,然后无限重复循环,直到形式关闭。可配置文本的字体。

任何帮助都将受到赞赏。

反馈后更新

这是我目前的进展。简单的jpanel。现在我如何添加随机数和计时器

import javax.swing.JFrame;  
import javax.swing.JPanel;   
public class RandomSlide {  

public static void main(String[]args)  
{  
//Create a JPanel  
JPanel panel=new JPanel();  

//Create a JFrame that we will use to add the JPanel  
JFrame frame=new JFrame("Create a JPanel");  
//ADD JPanel INTO JFrame  
frame.add(panel);  
//Set default close operation for JFrame  
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
//Set JFrame size to :  
//WIDTH : 400 pixels  
//HEIGHT : 400 pixels  
frame.setSize(400,400);  
//Make JFrame visible. So we can see it  
frame.setVisible(true);  
 }  
 }  

2 个答案:

答案 0 :(得分:1)

您的代码中有多种语言,因此我不确定应该使用哪种语言。

对于java,您可以使用适当的UI元素创建一个JPanel,并构建一个Timer实例,每2秒发送一次计划事件以更新该值。

在VBA for Excel中,您必须对表单和计时器控件执行相同的操作,但是在Excel / VBA中可能会遇到比java中更多的问题。

更新16/04/2010

您实际上可以对JPanel进行子类化以清理代码。

class RandomDialog extends JFrame
{
   private Timer _timer;
   private JPanel _container;     

   public RandomDialog()
   {
      _timer = new Timer();
      _container = new JPanel();

      // Etc...
   }
}

从这里你可以实例化你的孩子并在计时器上注册一个事件来调用你班上的一个函数,该函数生成随机数并将其显示给JLabel。

然后你就可以在驱动程序中调用对话框,如下所示:

public static void main(string [] args)
{
   RandomDialog rand = new RandomDialog();
   rand.show();
}

答案 1 :(得分:0)

这里有一些代码可以让你滚动。 请注意,您只需扩展JLabel而不是JPanel。我根据您的问题使用了JPanel。另请注意,您可以使用timer.setDelay() API来更改时间。此外,您可以通过stop()电话停止计时器。

package answer;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;

public class RandomPanel extends JPanel implements ActionListener {
    private static final int TWO_SECONDS=2000;
    private static final int MAX=99999;
    private static final int MIN=0;
    private Timer timer = new javax.swing.Timer(TWO_SECONDS, this);

    private JLabel msgLabel;
    Random generator = new Random();
    public RandomPanel(Font f){
        msgLabel = new JLabel();
        msgLabel.setFont(f);
        msgLabel.setText(rand());
        add(msgLabel);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
            msgLabel.setText(msgLabel.getText().equals("")?rand():"");
    }

    private String rand() {
        //generate random beteween MIN & MAX
        return Integer.toString((int) (MIN + Math.random() * ( MAX - MIN) + 0.5));
    }
    public void start(){
        timer.start();
    }

    /**
     * Rudimentary test
     * @param args
     */
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        RandomPanel randomPanel = new RandomPanel(new Font("Serif", Font.BOLD, 50));
        frame.getContentPane().add(randomPanel);
        frame.setSize(400,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        randomPanel.start();
    }
}