ورود

View Full Version : نمایش value



yegane8
یک شنبه 25 تیر 1391, 00:36 صبح
سلام
من یه کلاس دارم که تو این کلاس یک hashMap یک کلاس دیگه رو به عنوان value ست میکنه
اون کلاسی که به عنوان value ست میشه مثلا دارای 5 فیلد است
این hashMap حدود 100 تا عنصر دارد
حالا من می خوام تمام value ها رو در یک JTabel نمایش بدهم
چطوری باید این کار رو انجام بدهم ؟
در ضمن برای اینکه بفهمم value ها چی میشن یکبار value ها رو با متد toString تبدیل کردم به string و با چاپ شون کردم به جای هر کدام @498528583 با اعداد مختلف چاپ شد باید چی کار کنم
؟
باتشکر

spiderman200700
یک شنبه 25 تیر 1391, 01:15 صبح
سلام
باید فیلد های داخل value رو چاپ کنی نه خود value
برای ساخت JTable هم اینجا رو ببینید:
http://java.tadbirpoya.ir/articles/JAVA%20SE/JTable.htm

yegane8
یک شنبه 25 تیر 1391, 02:15 صبح
الان همین کاری که گفتید رو اجام دادم درست شد
فقط باید چی کار کنم تا سایز table با سایز frame یکی شه یعنی تمام در عرض frame هیچ چیز جز table دیده نشه
و در ضمن سربرگ table با اینکه اینطوری set کرده بودم به نمایش در نیامد چرا؟

String[] columnNames = {"word","synonym","fonetic"};
table = new JTable(tableData,columnNames);
باتشکر

yegane8
یک شنبه 25 تیر 1391, 02:21 صبح
چرا وقتی تو فایل فارسی تایپ می کنم دیگه اصلا table تو فرم دیده نمیشه؟
باتشکر

spiderman200700
یک شنبه 25 تیر 1391, 10:29 صبح
برای اینکه با عرض JFrame یکی بشه اینطوری عمل کنید:
int v = JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED;
int h = JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED;
JScrollPane jsp = new JScrollPane(table, v, h);
jsp.setPreferredSize(new Dimension(800, 528));
jsp.setComponentOrientation(ComponentOrientation.R IGHT_TO_LEFT);
jsp.getVerticalScrollBar().setComponentOrientation (ComponentOrientation.LEFT_TO_RIGHT);
frame.add(jsp);

در مورد Header جدول هم من نمیدونم شما چه کدی زدی. ولی به هر حال مطمئن ترین راه و حرفه ای ترین راه ساخت مدلی از جدوله که توی لینک زیر آموزش داده شده.
با روش ساخت مدل جدول کنترل کاملی روی همه چیز JTable داری.
http://java.tadbirpoya.ir/articles/JAVA%20SE/JTable%20Tutorial.htm

spiderman200700
یک شنبه 25 تیر 1391, 10:30 صبح
چرا وقتی تو فایل فارسی تایپ می کنم دیگه اصلا table تو فرم دیده نمیشه؟
باتشکر

توی فایل "تایپ" می کنید، چه ربطی به table داره؟!!
لطفا بیشتر توضیح بدید که مشکل چیه

yegane8
یک شنبه 25 تیر 1391, 23:02 عصر
توی فایل "تایپ" می کنید، چه ربطی به table داره؟!!
لطفا بیشتر توضیح بدید که مشکل چیه

وقتی که یک کلمه رو تو فایل فارسی تایپ می کنم به عنوان یکی از فیلد های کلاسی که میریزم تو hashMap نمی دونم چرا دیگه اصلا table نمایش داده نمی شه ولی وقت همون کلمه رو فینگلیش تایپ می کنم همه چی درسته
باید چی کار کنم؟
باتشکر

spiderman200700
یک شنبه 25 تیر 1391, 23:06 عصر
فایل رو چطوری میخونید؟

yegane8
یک شنبه 25 تیر 1391, 23:55 عصر
فایل رو چطوری میخونید؟
اینطوری

Scanner input1 = new Scanner(new File("name.txt"));


while(input1.hasNextLine()){

yegane8
دوشنبه 26 تیر 1391, 00:47 صبح
ممنون حل شد
با encoding ANSI ذخیره می کردم به خاطر همین همه اطلاعاتم lose میشد

yegane8
دوشنبه 26 تیر 1391, 02:10 صبح
سلام
من می خوام هر جا که تو فایل به "," رسیدم اوون string تو یکی از عناصر یک arrayList نگه داشته شه
این کار رو انجام دادم اینطوری:

private ArrayList<String> arrValues;

String line1;
Scanner input1 = new Scanner(new File("learnWord.txt"));


while(input1.hasNextLine()){
line1 = input1.nextLine();
Scanner data = new Scanner(line1);

while (data.hasNext()){
String[] values= line1.split(",");//values separate by ,
for(String word : values)
arrValues.add(word);
word= arrValues.get(0);
synonym = arrValues.get(1);
fonetic = arrValues.get(2) ;
حالا مشکلم اینه که بعد از اینکه word , synonym , fonetic رو می ریزم تو hashMap و می خوام اوون ها رو نمایش بدم هیچی به نمایش در نمیاد حتی همون frame
و وقتی که while (data.hasNext()) این خط رو از برنامه حذف می کنم فقط یک سطر از جدولم به همراه اطلاعات درونش به نمایش در میاد
مشکل از کجاست ؟
باتشکر

spiderman200700
دوشنبه 26 تیر 1391, 02:23 صبح
ممنون حل شد
با encoding ANSI ذخیره می کردم به خاطر همین همه اطلاعاتم lose میشد

حتی اگه با ANSI هم ذخیره کرده باشید میتونید با utf-8 بخونید فایل رو که با فارسی هم مشکلی نداشته باشه

spiderman200700
دوشنبه 26 تیر 1391, 02:29 صبح
سلام
من می خوام هر جا که تو فایل به "," رسیدم اوون string تو یکی از عناصر یک arrayList نگه داشته شه
این کار رو انجام دادم اینطوری:

private ArrayList<String> arrValues;

String line1;
Scanner input1 = new Scanner(new File("learnWord.txt"));


while(input1.hasNextLine()){
line1 = input1.nextLine();
Scanner data = new Scanner(line1);

while (data.hasNext()){
String[] values= line1.split(",");//values separate by ,
for(String word : values)
arrValues.add(word);
word= arrValues.get(0);
synonym = arrValues.get(1);
fonetic = arrValues.get(2) ;
حالا مشکلم اینه که بعد از اینکه word , synonym , fonetic رو می ریزم تو hashMap و می خوام اوون ها رو نمایش بدم هیچی به نمایش در نمیاد حتی همون frame
و وقتی که while (data.hasNext()) این خط رو از برنامه حذف می کنم فقط یک سطر از جدولم به همراه اطلاعات درونش به نمایش در میاد
مشکل از کجاست ؟
باتشکر

این دو خط باید خذف بشن:
Scanner data = new Scanner(line1);
while (data.hasNext()){

در ضمن فکر میکنم مشکل اصلی ساختار فایلتونه

yegane8
دوشنبه 26 تیر 1391, 03:11 صبح
اون دو خط رو که حذف کردم فقط یک سطر از جدولم به همراه اطلاعات درونش به نمایش در میاد
قبلا که اینطوری بود همه چی درست به نمایش در میامد


while(input1.hasNextLine()){
line1 = input1.nextLine();
Scanner data = new Scanner(line1);

while (data.hasNext()){

word = data.next();

synonym = data.next();
fonetic = data.next();
ساختار فایل ام اینطوریه:
word1,mean1,fonetic1
word2,mean2,fonetic2
word3,mean3,fonetic3
.
.
.

spiderman200700
دوشنبه 26 تیر 1391, 15:06 عصر
فکر نمیکنم اینطوری بشه نظر داد.
احتمالا جای خاصی از کدتون یه اشتباه رخ داده که اینطوری میشه.
باید کد رو کامل دید.

yegane8
دوشنبه 26 تیر 1391, 17:27 عصر
public class mapWord {

private String word;
private String synonym;
private String fonetic;
private HashMap<String, word2> wordMap;
private ArrayList<String> arrValues;

public mapWord() throws FileNotFoundException{

arrValues = new ArrayList<String>();
wordMap = new HashMap();
setMap();
}

private void setMap() throws FileNotFoundException {

String line1;
Scanner input1 = new Scanner(new File("learnWord.txt"));


while(input1.hasNextLine()){
line1 = input1.nextLine();
Scanner data = new Scanner(line1);

while (data.hasNext()){
String[] values= line1.split(",");//values separate by ,
for(String word : values)
arrValues.add(word);
word= arrValues.get(0);
synonym = arrValues.get(1);
fonetic = arrValues.get(2) ;
wordMap.put(word, new word2(word,synonym,fonetic));
}

public static void main(String args[]) throws FileNotFoundException {
mapWord mw = new mapWord();

}

}
علاوه بر مشکل قبل مشکل set کردن سربرگ جدول رو هم دارم

spiderman200700
دوشنبه 26 تیر 1391, 17:51 عصر
فکر میکنم مشکل از این خطه که باید اینطوری نوشته بشه:
Object[][] tableData = new Object[wordMap.size()][3];
بعد از فراخوانی متد setMap چک کنید ببینید size شی wordMap چنده
در ضمن باید اون 2 خطی هم که گفتم حذف بشه. امتحان کنید ببینید درست میشه یا نه

برای نمایش header جدول هم این خط رو اینطوری بنویسید
panel.add(new JScrollPane(table));

yegane8
دوشنبه 26 تیر 1391, 18:11 عصر
هیچ فرقی نکرد بازم همون اولی رو به نمایش در میاره :گریه:
سایز رو هم چک کرد 1 بود
پس چرا اونطوری که تو پست 14 گفتم درست بود
یک حلق ی while کم داره ولی نمی دونم چیه؟
باید چی کار کنم؟
باتشکر

spiderman200700
دوشنبه 26 تیر 1391, 19:06 عصر
متد setMap رو اینطوری بنویسید. درست میشه انشالله
private void setMap() throws FileNotFoundException {
Scanner input = new Scanner(new File("learnWord.txt"));
while (input.hasNextLine()) {
String[] values = input.nextLine().split(",");//values separate by ,
wordMap.put(values[0], new word2(values[0], values[1], values[2]));
}
input.close();
}

yegane8
دوشنبه 26 تیر 1391, 22:20 عصر
مرسسسسسسی درست شد :لبخند:
میشه بگین مشکل مال من چی بود به نظر همه چی درست میامد
باتشکر

spiderman200700
دوشنبه 26 تیر 1391, 22:35 عصر
خواهش میکنم
فکر کنم معلوم باشه مشکلش چی بود. یه جورایی نصف بیشتر کدهای اون متد زیادی بود.
خودتون یه ذره دقت کنید همه ی اشکال کد خودتونو میفهمید