2011-11-23 41 views
4

所以我有這個班。我們將其稱爲ProcessBox。我有另一個叫Process的類,它有一個ProcessBox作爲成員變量。然後,在我的主要方法中,我有一個ProcessList對象的ArrayList(每個對象都有自己的ProcessBox)。我將如何去做,以便我的ProcessBox會更新每個x毫秒(其中x是用戶指定的,我已經有用於輸入x的偵聽器)。以下是我的ProcessBox類。這是我希望重繪每x毫秒(除了它們的整個列表)。使用用戶指定的計時器更新gui中的JPanel和屬性?

import java.awt.*; 

import javax.swing.*; 
import javax.swing.border.LineBorder; 

import java.util.*; 

public class ProcessBox extends JPanel { 
    GridBagLayout gbc_panel; 

    public ProcessBox(Process p) { 
     super(new GridBagLayout()); 
     gbc_panel = new GridBagLayout(); 
     gbc_panel.columnWidths = new int[] { 0, 0, 0 }; 
     gbc_panel.rowHeights = new int[] { 0, 0, 0, 0, 0, 0 }; 
     gbc_panel.columnWeights = new double[] { 0, 0, Double.MIN_VALUE }; 
     gbc_panel.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 
       Double.MIN_VALUE }; 
     super.setLayout(gbc_panel); 


     setPreferredSize(new Dimension(110, 110)); 
     setMinimumSize(new Dimension(110, 110)); 
     setAlignmentX(Component.LEFT_ALIGNMENT); 
     setBorder(new LineBorder(new Color(0, 0, 0), 1)); 
     setSize(new Dimension(110, 110)); 

     String name = p.getName(); 
     int priority = p.getPriority(); 
     int minPriority = p.getMinPriority(); 
     ArrayList<Integer> times = p.getTime(); 
     Random r = new Random(System.currentTimeMillis()); 
     setBackground(new Color(r.nextInt(255 - 210) + 210, 
       r.nextInt(255 - 210) + 210, r.nextInt(255 - 210) + 210)); 

     JLabel lblNewLabel = new JLabel("ID:"); 
     GridBagConstraints gbc_lblNewLabel = new GridBagConstraints(); 
     gbc_lblNewLabel.gridheight = 2; 
     gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5); 
     gbc_lblNewLabel.gridx = 0; 
     gbc_lblNewLabel.gridy = 0; 
     add(lblNewLabel, gbc_lblNewLabel); 

     JLabel lblNewLabel_1 = new JLabel(name); 
     GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints(); 
     gbc_lblNewLabel_1.gridheight = 2; 
     gbc_lblNewLabel_1.insets = new Insets(0, 0, 5, 0); 
     gbc_lblNewLabel_1.gridx = 1; 
     gbc_lblNewLabel_1.gridy = 0; 
     add(lblNewLabel_1, gbc_lblNewLabel_1); 

     JLabel lblNewLabel_2 = new JLabel("Priority:"); 
     GridBagConstraints gbc_lblNewLabel_2 = new GridBagConstraints(); 
     gbc_lblNewLabel_2.insets = new Insets(0, 0, 5, 5); 
     gbc_lblNewLabel_2.gridx = 0; 
     gbc_lblNewLabel_2.gridy = 2; 
     add(lblNewLabel_2, gbc_lblNewLabel_2); 

     JLabel lblNum = new JLabel(Integer.toString(priority)); 
     GridBagConstraints gbc_lblNum = new GridBagConstraints(); 
     gbc_lblNum.insets = new Insets(0, 0, 5, 0); 
     gbc_lblNum.gridx = 1; 
     gbc_lblNum.gridy = 2; 
     add(lblNum, gbc_lblNum); 

     JLabel lblNewLabel_3 = new JLabel("Min:"); 
     GridBagConstraints gbc_lblNewLabel_3 = new GridBagConstraints(); 
     gbc_lblNewLabel_3.insets = new Insets(0, 0, 5, 5); 
     gbc_lblNewLabel_3.gridx = 0; 
     gbc_lblNewLabel_3.gridy = 3; 
     add(lblNewLabel_3, gbc_lblNewLabel_3); 

     JLabel lblMp = new JLabel(Integer.toString(minPriority)); 
     GridBagConstraints gbc_lblMp = new GridBagConstraints(); 
     gbc_lblMp.insets = new Insets(0, 0, 5, 0); 
     gbc_lblMp.gridx = 1; 
     gbc_lblMp.gridy = 3; 
     add(lblMp, gbc_lblMp); 

     JLabel lblTimeSlice = new JLabel("Slice:"); 
     GridBagConstraints gbc_lblTimeSlice = new GridBagConstraints(); 
     gbc_lblTimeSlice.insets = new Insets(0, 0, 0, 5); 
     gbc_lblTimeSlice.gridx = 0; 
     gbc_lblTimeSlice.gridy = 4; 
     add(lblTimeSlice, gbc_lblTimeSlice); 

     JLabel lblLeft = new JLabel(Integer.toString(times.get(0))); 
     GridBagConstraints gbc_lblLeft = new GridBagConstraints(); 
     gbc_lblLeft.gridx = 1; 
     gbc_lblLeft.gridy = 4; 
     add(lblLeft, gbc_lblLeft); 
     setVisible(true); 

} 

}

+2

http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html – camickr

+0

在這個擺動計時器內我該做什麼?我是GUI新手。 – snotyak

+1

你讀過API了嗎?您是否按照「如何使用計時器」的Swing教程鏈接?你下載並嘗試這個例子嗎?這個例子的哪部分你不瞭解? – camickr

回答

相關問題