Re: [問題] JAVA的繪圖程式 (大富翁)
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