Re: [問題] JAVA的繪圖程式 (大富翁)

看板java作者 (LaPass)時間13年前 (2012/06/05 09:42), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
public class TEST extends Frame { static TEST frm1=new TEST(); static Frame frm=new Frame("大富翁"); static Label lab00=new Label(); static Label lab01=new Label(); static Label labDice=new Label(); //static Label lab107=new Label(); //static Label lab108=new Label(); //static Label lab109=new Label(); //........ 其餘略 //上面那堆點用這一行取代 static Map<Integer,Label> LocatMap = new ThreeMap<Integer,Label>(); static Button Dice=new Button("擲骰子"); public static void main(String args[]) { frm.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);}}); Dice.addActionListener(new ActLis()); frm.setLayout(null); frm.setSize(1366,646); frm.setBackground(Color.white); Dice.setBounds(420,263,120,80); lab00.setText("大 富 翁"); lab00.setBackground(Color.white); //gray lab00.setAlignment(Label.CENTER); lab00.setForeground(Color.blue); lab00.setLocation(100,96); lab00.setSize(800,180); lab01.setText("環遊世界"); lab01.setBackground(Color.white); lab01.setAlignment(Label.CENTER); lab01.setForeground(Color.blue); lab01.setLocation(100,396); lab01.setSize(800,180); labDice.setText("你擲出 點"); labDice.setBackground(Color.white); labDice.setAlignment(Label.CENTER); labDice.setForeground(Color.blue); labDice.setLocation(380,353); labDice.setSize(200,40); //一般會把資料放在外部,在程式執行時才讀進來 //然後再用個迴圈去新增Label //這邊直接來,所以程式碼還是很長一串 Label label=new Label(); labe1.setText("往歐洲!!"); labe1.setBackground(Color.red); labe1.setAlignment(Label.CENTER); labe1.setForeground(Color.blue); labe1.setLocation(0,36); labe1.setSize(100,60); LocatMap.put(11,label); label=new Label(); labe1.setText("東京"); labe1.setBackground(Color.pink); labe1.setAlignment(Label.CENTER); labe1.setForeground(Color.blue); labe1.setLocation(0,96); labe1.setSize(100,60); LocatMap.put(21,label); ..... 其他地點略 Font fnt00=new Font("Serief",Font.BOLD,100); Font fnt=new Font("Serief",Font.ITALIC+Font.BOLD,18); Font fntDice=new Font("Serief",Font.BOLD,28); lab00.setFont(fnt00); lab01.setFont(fnt00); labDice.setFont(fntDice); // lab109.setFont(fnt); // frm.add(lab109); // ......其餘略 // 像這種要針對每個點去做設置的,用個迴圈去跑就好 // 就不用剪下貼上的這麼辛苦了 for(Map.Entry<Integer,Label> me: LocatMap.EntrySet()) { me.getValue().setFont(fnt); frm.add(me.getValue()); } frm.add(lab00); frm.add(lab01); frm.add(labDice); frm.add(Dice); frm.setVisible(true); } 下略 ==================== 這種容器物件的使用,不論在哪種框架下都是通用的 用這種方式來寫可以省很多事 以上,手打沒經過IDE除錯或是測試,可能會打錯字之類的 基本上這類內容用 容器物件 java 下去google就能找到許多內容 以及,我沒寫過Frame,不知道你的BUG出在哪邊..... -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.16.65

06/06 13:22, , 1F
終於看懂了 謝謝指教
06/06 13:22, 1F
文章代碼(AID): #1FpMG15q (java)