PDA

View Full Version : مشکل در ارسال هر خط از فایل به یک متد



yegane8
جمعه 13 مرداد 1391, 03:29 صبح
سلام
من می خواهم هر خط از فایل رو اینطوری به یک متد ارسال کنم
Scanner read =new Scanner(new File("idiom.txt"));

JPanel p4 = createPanel(new String[]{
read.nextLine();
});
مشکل از همین جاست نمی دونم ای تیکه رو چطوری بنویسم؟
متدی که هر خط از فایل بهش ارسال میشه :
static JPanel createPanel(String[] sa) {
JPanel p = new JPanel(new GridLayout(0,1));
for(int i=0;i<sa.length;++i) p.add(new JLabel(sa[i]));
return p;
}

باتشکر

spiderman200700
جمعه 13 مرداد 1391, 12:06 عصر
سلام.
یه ArrayList برای JPanelها درست کن و موقع خوندن فایل هردفعه که یه خط از فایل رو میخونی متد createPanel را صدا بزن و اون خط رو بهش پاس بده و JPanelی که برمیگردونه رو به ArrayList اضافه کن.

yegane8
شنبه 14 مرداد 1391, 01:13 صبح
کاری مه گفتید رو انجام دادم اما مشکلی که هست اینه که الان من این panelLIst رو چطوری به یک JSplitPane پاس بدهم حتما باید یک panel پاس بدم اما الان یه list از panel ها دارم
باید چی کار کنم؟
باتشکر

yegane8
شنبه 14 مرداد 1391, 01:53 صبح
حالا به جای اینکه یک array از پنل ها درست کنم یک Array از Jlabel ها درست کردم و هر خط رو در یک label
asign میکنم و label رو در ارایه ای از label ها می ریزم حالا این ارایه از jlabel ها رو چطوری در یک panel نشان بدهم؟
باتشکر

yegane8
شنبه 14 مرداد 1391, 02:14 صبح
من دقیقا همی کار رو در یک جای دیگر برنامم انجام دادم اما اینجا به جای اینکه در پنل jalbel های Add شده رو ببینیم یک panel خالی می بینم
while(read.hasNextLine()){
line1 = read.nextLine();
JLabel label = new JLabel(line1);
panel4.add(label);
}
چرا؟ مشکل از کجاست؟
با تشکر

spiderman200700
شنبه 14 مرداد 1391, 12:31 عصر
مشکل ممکنه صدها دلیل مختلف داشته باشه.
به JPanelت Layout دادی؟
شاید مشکل همین باشه.

yegane8
شنبه 14 مرداد 1391, 19:58 عصر
مشکل ممکنه صدها دلیل مختلف داشته باشه.
به JPanelت Layout دادی؟
شاید مشکل همین باشه.
نه مشکل از این نیست نمیدونم مشکل از چیه وقتی یه فایل دیگه به جز اوونی که مورد نظر من هست رو گرفتم درست اجرا شد ولی واسه اوون فایلی که مورد نیاز منه یه پنل که توش هیچی نیست نمایش داده میشه
:گریه:

spiderman200700
یک شنبه 15 مرداد 1391, 00:03 صبح
کدت رو بذار اینجا که ببینیم

yegane8
یک شنبه 15 مرداد 1391, 00:37 صبح
import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.*;
import javax.swing.event.*;

public class tabbedConverstion {

private ArrayList labelList;
private String[] data;
private JLabel label;
public tabbedConverstion() throws FileNotFoundException{
setTab();

}


private void setTab() throws FileNotFoundException{
JPanel p3 = new JPanel(new FlowLayout());
BoxLayout boxlayout = new BoxLayout(p3, BoxLayout.Y_AXIS);
p3.setLayout(boxlayout);

JPanel p4 = new JPanel(new FlowLayout());
BoxLayout boxlayout = new BoxLayout(p4, BoxLayout.Y_AXIS);
p4.setLayout(boxlayout);
Scanner read =new Scanner(new File("getJob.txt"));
labelList = new ArrayList<JLabel>();
String line1;

while(read.hasNextLine()){
line1 = read.nextLine();
JLabel label = new JLabel(line1);
p4.add(label);
}
Scanner read =new Scanner(new File("trip.txt"));
labelList = new ArrayList<JLabel>();
String line2;

while(read.hasNextLine()){
line2 = read.nextLine();
JLabel label = new JLabel(line2);
p3.add(label);
}
final JSplitPane jSplitPane =
new JSplitPane(JSplitPane.VERTICAL_SPLIT,p3, p4);

jSplitPane.setContinuousLayout(true);
final JTabbedPane jtp = new JTabbedPane();

jtp.addTab("Getting a job",jSplitPane);
//jtp.addTab("shopping",p1);
jtp.addTab("shopping",p3);
jtp.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
System.out.println("tabIndex="+jtp.getSelectedIndex());
}
});

JFrame frame = new JFrame();
Container cp = frame.getContentPane();
cp.add(jtp);

frame.pack();
frame.setVisible(true);
}

spiderman200700
یک شنبه 15 مرداد 1391, 12:40 عصر
برنامه رو تست کردم. هیچ مشکلی نداشت . فایل رو میخونه و هر سطرش رو به عنوان یه JLable نمایش میده.
تنها دلیلی که برای این مشکل به ذهنم میرسه اینه که فایلت خالیه.

spiderman200700
یک شنبه 15 مرداد 1391, 12:43 عصر
البته من توی برنامه دوتا تغییر خیلی کوچیک ایجاد کردم. شما از این استفاده کن. شاید مشکل حل بشه:

import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.*;
import javax.swing.event.*;

public class tabbedConverstion {

private ArrayList labelList;
private String[] data;
private JLabel label;

public tabbedConverstion() throws FileNotFoundException {
setTab();

}

private void setTab() throws FileNotFoundException {
JPanel p3 = new JPanel(new FlowLayout());
BoxLayout boxlayout = new BoxLayout(p3, BoxLayout.Y_AXIS);
p3.setLayout(boxlayout);

JPanel p4 = new JPanel(new FlowLayout());
boxlayout = new BoxLayout(p4, BoxLayout.Y_AXIS);
p4.setLayout(boxlayout);
Scanner read = new Scanner(new File("getJob.txt"));
labelList = new ArrayList<JLabel>();
String line1;

while (read.hasNextLine()) {
line1 = read.nextLine();
JLabel label = new JLabel(line1);
p4.add(label);
}
read = new Scanner(new File("trip.txt"));
labelList = new ArrayList<JLabel>();
String line2;

while (read.hasNextLine()) {
line2 = read.nextLine();
JLabel label = new JLabel(line2);
p3.add(label);
}
final JSplitPane jSplitPane =
new JSplitPane(JSplitPane.VERTICAL_SPLIT, p3, p4);

jSplitPane.setContinuousLayout(true);
final JTabbedPane jtp = new JTabbedPane();

jtp.addTab("Getting a job", jSplitPane);
//jtp.addTab("shopping",p1);
jtp.addTab("shopping", p3);
jtp.addChangeListener(new ChangeListener() {

public void stateChanged(ChangeEvent e) {
System.out.println("tabIndex=" + jtp.getSelectedIndex());
}
});

JFrame frame = new JFrame();
Container cp = frame.getContentPane();
cp.add(jtp);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);
frame.pack();
frame.setVisible(true);
}
}

yegane8
دوشنبه 16 مرداد 1391, 02:56 صبح
خیلی عجیبه بازم فقط 2 تا پنل خالی دیده میشه :گریه:

yegane8
دوشنبه 16 مرداد 1391, 04:16 صبح
در ضمن توی actionListener اوون باتنی که بل زدنش می خوام این کلاس اجرا شه از این کلاس یک object ساختم
باتشکر

spiderman200700
دوشنبه 16 مرداد 1391, 04:44 صبح
هرچند بعید میدونم مشکل از کدهاتون باشه. ولی اگه از کد ها باشه، مشکل از این کلاس نیست. جاهای دیگه رو بررسی کنید شاید احیانا ربطی به این کلاس داشته باشن و مشکل از اونجا باشه

yegane8
دوشنبه 16 مرداد 1391, 04:56 صبح
اخه اصلا به جز همون button ی که گفتم هیچ جا از این کلاس استفاده نکردم
اگه مشکل از کد نباشه از چی می تونه باشه فایل ها هم وجود داره هم خالی نیست:متفکر:

spiderman200700
دوشنبه 16 مرداد 1391, 13:32 عصر
بعد از این دوخط:
line1 = read.nextLine();
line2 = read.nextLine();
از System.out.println() استفاده کن ببین توی خروجی خطوطی که از فایل میخونی رو نمایش میده یانه.

yegane8
دوشنبه 16 مرداد 1391, 18:33 عصر
نه هیچی به عنوان خروجی چاپ نمیشه ولی وقتی یه فایل نامربوط رو به عنوان ورودی می دم درست میشه ولی من مطمئنم که هم فایل ها وجود دارند هم پر اند :متفکر:

spiderman200700
دوشنبه 16 مرداد 1391, 18:53 عصر
پس حدسم درست بود. مشکل از فایله.
فایلت رو دوباره بساز و با فرمت UTF ذخیره کن ببین درست میشه یا نه.

yegane8
دوشنبه 16 مرداد 1391, 19:31 عصر
ممنون درست شد:لبخندساده:
اما چرا با فرمت َANSI نمیشه همیشه باید با فرمت utf ذخیره کنم؟
اما یه مشکل به وجود اومده الان من JSplitPane رو که حرکت میدم تغییری در فاصله بین label ها به وجود نمی اید من میخام با حرکت JSplitPane فاصله بین label ها زیاد و کم بشه باید چی کار کنم؟
باتشکر