2010-04-15 50 views
0

這種編程方式。我該如何編程這個UI框

一個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); 
} 
} 
+0

您想要使用哪種語言列出的許多? – 2010-04-15 23:40:11

+0

最好是java,但歡迎其他解決方案 – silverkid 2010-04-15 23:41:42

+0

你的具體問題是什麼?你有什麼嘗試? – Enrique 2010-04-15 23:52:26

回答

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(); 
    } 
} 
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(); 
} 
+0

jpanel部分...你可以用'javax.swing.Timer'的一些編碼或僞代碼 – silverkid 2010-04-15 23:50:23

+0

+ 1來顯示。 @silverkid:這是一個可以幫助你的Java的秒錶。 http://stackoverflow.com/questions/2576353/stop-a-stopwatch/2576909#2576909 – trashgod 2010-04-16 01:42:04