線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3977
推到 Plurk!
推到 Facebook!

如何用vector做一個物件容器並取得它的物件.

答題得分者是:neoart
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-16 12:02:32 IP:202.175.xxx.xxx 訂閱
import java.util.*;
import java.io.*;
import javax.swing.*;
public class VectorDemo {

public static void main(String[] args){

JFrame FF=new JFrame("Test How To User Vertor");
FF.setSize(400,400);
FF.setLocation(200,200);
// FF.setBounds(200, 200, 200, 300);
FF.setVisible(true);

Vector v = new Vector(4);

for (int i=0;i {
JLabel F=new JLabel("F" i);
F.setSize(200, 200);
v.addElement(F);
}

Enumeration en=v.elements();
JLabel FFF=new JLabel("FFFFF");
while(en.hasMoreElements())
{
FFF=(JLabel)en.nextElement();
FFF.setSize(50,50);
FF.add(FFF);
}
}
}
不能顯示jlabel的物件在jframe上.不知如何使用它.多謝

編輯記錄
figo 重新編輯於 2007-07-16 12:03:51, 註解 無‧
figo 重新編輯於 2007-07-16 12:04:29, 註解 無‧
figo 重新編輯於 2007-07-16 12:05:00, 註解 無‧
figo 重新編輯於 2007-07-16 12:07:53, 註解 無‧
figo 重新編輯於 2007-07-16 12:11:15, 註解 無‧
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-16 13:54:22 IP:61.64.xxx.xxx 訂閱
==========================================
Enumeration en=v.elements();
JLabel FFF=new JLabel("FFFFF");
while(en.hasMoreElements())
{
FFF=(JLabel)en.nextElement();
FFF.setSize(50,50);
FF.add(FFF);
}
===========================================
要改成
Enumeration en=v.elements();
while(en.hasMoreElements())
{
JLabel FFF=(JLabel)en.nextElement();
FFF.setSize(50,50);
FFF.setBound(.....);//你自己推
FF.add(FFF);
}
FF.repaint();
FF.validate();
===========================================
另外,vector可以不用這麼麻煩
Vector vct=new Vector();
String xxx
vct.add(xxx);
...
...
for(int i=0;i String item=(String)vct.get(i);
...
...
}
vct.getSize();很好用,你不用while( vct.next()) .... 去測試幾個元素再決定吧
順便送你一個常用的函數 toArray的用法
String strArry[]=vct.toArray(new String[0]);
只要是有預設建構式( 也就是 " new Class() "),就可以用 這類的toArray的方式直接轉成陣列,試一下吧

編輯記錄
neoart 重新編輯於 2007-07-16 14:01:30, 註解 無‧
neoart 重新編輯於 2007-07-16 14:05:21, 註解 無‧
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-16 14:15:17 IP:202.175.xxx.xxx 訂閱
請問這樣的設定有無問題.vector能不能save jframe呢?

因為我想做一個connectionpool的,因為用到vector.同也下載你的connectionpool的源代碼

不是太了解vector的object的機制,所以想試下加一個jlabel可不可得出jlabel的物件和值.

剛加了.

Enumeration en=v.elements();
int i=1;
while(en.hasMoreElements())
{
JLabel FFF=(JLabel)en.nextElement();
FFF.setSize(50,50);
FFF.setBounds(50*i,50*i,50*i,50*i);
FF.add(FFF);
i =1;
}
FF.repaint();
FF.validate();
FF.setVisible(true);

都不能顯示出.由於剛學java沒多久.希望大大多多指點一下.多謝

neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-16 16:02:54 IP:61.64.xxx.xxx 訂閱
1.
sorry,我漏看了
你的JFrame並未設定layout manager
也就是...
JFrame FF=new JFrame("Test How To User Vertor");
FF.getContentPane().setLayout(null); <<--------------這行
FF.setSize(400,400);
FF.setLocation(200,200);

-------------------這麼多個F FF FFF FFFFFFFFFF---你都不會看花,你真的比我強太多了,請受在下一拜-----

2. Vector & list & 眾多collection(集合類別)的用法都差不多,你會一個就其他都會了,別怕

3. Connection Pool...你是指database嗎?勸你直接用database公司提供的.
ex:
Oracle -- classes.zip
MS. SQL server :
msbase.jar ,msutil.jar ,mssqlserver.jar
Postgresql :Postgresql -8.2dev-500.jdbc3.jar
...
有廠商公司出的,就用他們出的---比較有保證,出事,也可以有的推卸,對吧?






figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-16 16:41:32 IP:202.175.xxx.xxx 訂閱
<textarea class="java" rows="10" cols="60" name="code">import java.util.*; import java.io.*; import javax.swing.*; public class VectorDemo { private static int MaxObject = 10; public static void main(String[] args){ JFrame FF=new JFrame("Test How To User Vertor"); //FF.getContentPane().setLayout(null); FF.setSize(400,400); FF.setLocation(200,200); // FF.setBounds(200, 200, 200, 300); Vector v = new Vector(MaxObject); for (int i=0; i
多謝你的指點.我解決問題la.問在出現在

<textarea class="java" rows="10" cols="60" name="code">Vector v = new Vector(MaxObject); for (int i=0; i
看來要好好加強學習.多謝 neoart 的回答.
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-07-16 16:55:14 IP:61.64.xxx.xxx 訂閱
.size() 函數指的是目前容器物件中的元素量,別搞錯了
想想,如果哪天元素量超過你的MaxObject的定數值的話,你要怎麼辦?
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-07-16 17:26:03 IP:202.175.xxx.xxx 訂閱
要加個判斷
<textarea class="java" rows="10" cols="60" name="code"> private static int MaxObject=10; ..... Vector v = new Vector(MaxObject); for (int i=0; i
多謝指點.以後會多加留意小節
但有個問題.如果用了v.size()做判斷,為什麼for不會執呢?
是否vector沒有初始化?
請neoart幫我分析一下.多謝
===================引 用 neoart 文 章===================
.size() 函數指的是目前容器物件中的元素量,別搞錯了
想想,如果哪天元素量超過你的MaxObject的定數值的話,你要怎麼辦?
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-07-16 17:33:37 IP:61.64.xxx.xxx 訂閱

  1. while(en.hasMoreElements())
  2. {
  3. JButton FFF=(JButton)en.nextElement();
  4. FFF.setSize(50,50);
  5. FFF.setBounds(50*i,50*i,50*i,50*i);
  6. FF.add(FFF);
  7. System.out.println("Go " i FFF.toString() "\n");
  8. }
改成:
  1. for(int i=0 ; i < v.size() ; i )
  2. {
  3. JButton FFF=(JButton)v.get(i);
  4. FFF.setSize(50,50);
  5. FFF.setBounds(50*i,50*i,50*i,50*i);
  6. FF.add(FFF);
  7. System.out.println("Go " i FFF.toString() "\n");
  8. }
想像一下,Vector 為函數的引數時,你總不必要再傳入一個"元素量"的變數吧.
編輯記錄
neoart 重新編輯於 2007-07-16 17:36:59, 註解 無‧
neoart 重新編輯於 2007-07-16 17:38:32, 註解 無‧
neoart 重新編輯於 2007-07-16 17:40:51, 註解 無‧
neoart 重新編輯於 2007-07-16 17:43:09, 註解 無‧
figo
初階會員


發表:47
回覆:70
積分:28
註冊:2004-12-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-07-16 17:52:42 IP:202.175.xxx.xxx 訂閱
修改如下..應該不會超過vector.size().再次多謝你的指教

<textarea class="java" rows="10" cols="60" name="code"> import java.util.*; import java.io.*; import javax.swing.*; public class VectorDemo { //private static int MaxObject = 10; public static void main(String[] args){ JFrame FF=new JFrame("Test How To User Vertor"); FF.getContentPane().setLayout(null); FF.setSize(600,600); FF.setLocation(200,200); // FF.setBounds(200, 200, 200, 300); //Vector v = new Vector(MaxObject); Vector v = new Vector(); //for (int i=0; i
系統時間:2024-05-06 14:38:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!