2012-03-02 43 views
1

我怎么可以将更多容器添加到我的Jframe?我的继承人的代码行,我想作一个时钟在包含在同一JFrame的侧面以外的时钟中的一个窗口,我的继承人代码:将更多容器添加到jframe

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.Calendar; 
public class CopyOftheclock { 
public static void main(String[] args) { 
    JFrame clock = new TextClockWindow(); 
    clock.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    clock.setVisible(true); 
    } 
} 


@SuppressWarnings("serial") 
class TextClockWindow extends JFrame { 
private JTextField timeField; 
    public TextClockWindow() { 
    timeField = new JTextField(7); 
    timeField.setFont(new Font("sansserif", Font.PLAIN, 48)); 

    Container content = this.getContentPane(); 
    content.setLayout(new FlowLayout()); 
    content.add(timeField); 

    this.setTitle("Norway"); 
    this.pack(); 
    javax.swing.Timer t = new javax.swing.Timer(1000, 
      new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 
        String a = ""; 
        Calendar now = Calendar.getInstance(); 
        int h = now.get(Calendar.HOUR_OF_DAY); 
        if (h==24) 
        { 
         h=8; 
         a = "A.M"; 
        } 
        if (h==1) 
        { 
         h=9; 
         a = "A.M"; 
        } 
        if (h==2) 
        { 
         h=10; 
         a = "A.M"; 
        } 
        if (h==3) 
        { 
         h=11; 
         a = "A.M"; 
        } 
        if (h==4) 
        { 
         h=12; 
         a = "P.M"; 
        } 
        if (h==5) 
        { 
         h=1; 
         a = "P.M"; 
        } 
        if (h==6) 
        { 
         h=2; 
         a = "P.M"; 
        } 
        if (h==7) 
        { 
         h=3; 
         a = "P.M"; 
        } 
        if (h==8) 
        { 
         h=4; 
         a = "P.M"; 
        } 
        if (h==9) 
        { 
         h=5; 
         a = "P.M"; 
        } 
        if (h==10) 
        { 
         h=6; 
         a = "P.M"; 
        } 
        if (h==11) 
        { 
         h=7; 
         a = "P.M"; 
        } 
        if (h==12) 
        { 
         h=8; 
         a = "P.M"; 
        } 
        if (h==13) 
        { 
         h=9; 
         a = "P.M"; 
        } 
        if (h==14) 
        { 
         h=10; 
         a = "P.M"; 
        } 
        if (h==15) 
        { 
         h=11; 
         a = "P.M"; 
        } 
        if (h==16) 
        { 
         h=12; 
         a = "P.M"; 
        } 
        if (h==17) 
        { 
         h=1; 
         a = "A.M"; 
        } 
        if (h==18) 
        { 
         h=2; 
         a = "A.M"; 
        } 
        if (h==19) 
        { 
         h=3; 
         a = "A.M"; 
        } 
        if (h==20) 
        { 
         h=4; 
         a = "A.M"; 
        } 
        if (h==21) 
        { 
         h=5; 
         a = "A.M"; 
        } 
        if (h==22) 
        { 
         h=6; 
         a = "A.M"; 
        } 
        if (h==23) 
        { 
         h=7; 
         a = "A.M"; 
        } 
        int m = now.get(Calendar.MINUTE); 
        int s = now.get(Calendar.SECOND); 
        timeField.setText("" + h + ":" + m + ":" + s + " " + a); 
       } 

      }); 
    t.start(); 
    } 
} 

如果你们能帮助我得到这个工作,我会真的很感激它!

+0

继承人一张图片,即时通讯设法试图做什么http://s1173.photobucket.com/albums/r597/jackiechanwins/?action=view¤t=clock.jpg – 2012-03-02 17:44:22

+0

通过使用'add()'方法? – 2012-03-02 17:45:52

+0

我在哪里可以把它放在代码中?每个容器将会有不同的数字 – 2012-03-02 17:46:35

回答

5

1)对于显示不可编辑的文本,使用JLabel而不是JTextField

2)对于较少的代码,请使用SimpleDateFormat的方法。

3)使用合适的LayoutManager;在你的情况(也许)GridLayout会让所有JComponent在屏幕上具有相同的Dimension

4)main public static void main(String[] args) {中所有与GUI相关的代码都应该包含在invokeLater();更多信息请登录Initial Threads

5)也许对于其余的this thread could be useful