作者LaPass (LaPass)
看板java
标题Re: [问题] JAVA的绘图程式 (大富翁)
时间Tue Jun 5 09:42:22 2012
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
1F:推 ian810317:终於看懂了 谢谢指教 06/06 13:22