Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 0
Регистрация: 10.12.2013
Сообщений: 68
1

Как считанный из файла массив передать в другой класс?

08.02.2014, 18:12. Показов 1470. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дело в том, что если я просто создаю массив и заполняю его, то он у меня передаётся, а если считанный из файла то не хочет. Точнее мне надо им заполнить JComboBox.
Вот код:
Главный класс:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
 
import javax.swing.*;
 
public class main {
    static String [] M = new String [5];
    static Scanner scn;
    public static void main(String[] args) {
        Combo r = new Combo();
        r.f1.setLayout(new FlowLayout());
        r.f1.setSize(250, 400);
        r.f1.setVisible(true);
        r.f1.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
        r.f1.setResizable(false);
        r.f1.setLocationRelativeTo(null);
        openFile();
        readfile();
        out();
    }
 
    
    private static void out() {
        for (int row=0; row<5; row++){
            System.out.print(M[row]+" ");
        }
    }
 
    private static void readfile() {
        while(scn.hasNext()){
            for (int row=0; row<5; row++){
                M[row]=scn.next();  
            }
        }   
        
    }
 
    private static void openFile() {
        try {
            scn = new Scanner(new File("res//2.txt"));
        } catch (Exception e) {JOptionPane.showMessageDialog(null, "Файл не найден");}  
        
    }
    
}
И остальное:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import javax.swing.*;
 
import java.awt.*;
import java.awt.event.*;
 
public class Combo{
    int a,b,i;
     main m = new main();
     
     DefaultComboBoxModel<String> m1=new DefaultComboBoxModel<String>(new String[]{"1","2","3"});
     DefaultComboBoxModel<String> m2=new DefaultComboBoxModel<String>(new String[]{"4","5","6"});
     
     JComboBox b1,b2;
     JTextField t1;
     JFrame f1;
     
    public Combo(){ 
    f1 = new JFrame("Box list");
    t1 = new JTextField(10);
    b1 = new JComboBox(m.M);
    b1.setEditable(true);
    b2 = new JComboBox(m1);
    b1.addItemListener(new ItemListener(){
        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange()==ItemEvent.SELECTED){
                b1.insertItemAt(e.getItem(), b1.getItemCount());
                if(b1.getSelectedIndex()==0){
                     b2.setModel(m1);
                        } else 
                            if(b1.getSelectedIndex()==1){
                                b2.setModel(m2);
                            }
        }
        
        
        
    }});
    
    f1.add(b1);
    f1.add(b2);
    f1.add(t1);
}
    
}
Добавлено через 19 часов 59 минут
Ну помогите кто-то, пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2014, 18:12
Ответы с готовыми решениями:

Как передать массив в другой класс
Не могу понять, я хочу чтобы массив заполнялся в классе Program а выводился в классе Clas методе...

Как передать двумерный массив в другой класс
Есть двумерный массив: private bool aUniverse = new bool; private enum UNIVERSE_SIZE {...

Передать массив значений в другой класс
Есть у меня программа Лабиринт. генерирует рандомный лабиринт. Каждая клетка имеет 4 стены со...

Не получается передать массив из одного в другой класс
Добрый день! Привет всем! Помогите пожалуйста! Как из класса Employee добавить масив работников в...

9
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
08.02.2014, 18:40 2

Не по теме:

Цитата Сообщение от Black_White Посмотреть сообщение
class main
Цитата Сообщение от Black_White Посмотреть сообщение
static void main
ну кто Вас так учил?



"то он у меня передаётся, а если считанный из файла то не хочет"

что, куда?
что там в файле?
close() не заметил после работы с файлами.

Не по теме:

Если никто не поможет, завтра посмотрю

0
2 / 2 / 0
Регистрация: 10.12.2013
Сообщений: 68
08.02.2014, 19:24  [ТС] 3
Цитата Сообщение от Wado-Ru Посмотреть сообщение

Не по теме:



ну кто Вас так учил?



"то он у меня передаётся, а если считанный из файла то не хочет"

что, куда?
что там в файле?
close() не заметил после работы с файлами.

Не по теме:

Если никто не поможет, завтра посмотрю

Спасибо что посмотрели. 1) Класс если переименовать, то пишет что не смог найти главный класс. 2) Я пытаюсь передать массив M из класса main в класс secondary, там я создал на него ссылку и передал в конструктор Combobox(там он у меня и должен отобразится). 3) насчёт закрытия, я читал что система сама закрывает файл, да и когда видео-урок смотрел там парень его не закрывал.
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
08.02.2014, 19:27 4
IDE не пользуетесь что-ли?
0
2 / 2 / 0
Регистрация: 10.12.2013
Сообщений: 68
08.02.2014, 19:31  [ТС] 5
Цитата Сообщение от Wado-Ru Посмотреть сообщение
IDE не пользуетесь что-ли?
Пользуюсь, Eclipse. Понимаю, сказал система, а надо было сказать IDE.
0
42 / 42 / 12
Регистрация: 15.12.2011
Сообщений: 131
08.02.2014, 19:39 6
Лучший ответ Сообщение было отмечено Black_White как решение

Решение

Black_White, У вас достаточно корявое решение с точки зрения построения классов. Особо переделывать не буду, но суть в том что для передачи результатов считывания из файла не нужно создавать в принимающем классе ещё один экземпляр.
Вот немного подправленное решение:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import javax.swing.*;
 
public class TestClass {
    static String [] M = new String [5];
    static Scanner scn;
    public static void main(String[] args) {
        
        openFile();
        readfile();
        out();
        Combo r = new Combo(M);
        r.f1.setLayout(new FlowLayout());
        r.f1.setSize(250, 400);
        r.f1.setVisible(true);
        r.f1.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
        r.f1.setResizable(false);
        r.f1.setLocationRelativeTo(null);
    }
 
    
    private static void out() {
        for (int row=0; row<5; row++){
            System.out.print(M[row]+" ");
        }
    }
 
    private static void readfile() {
        while(scn.hasNext()) {
            for (int row=0; row<5; row++){
                M[row]=scn.next();  
            }
        }   
        
    }
 
    private static void openFile() {
        try {
            scn = new Scanner(new File("res//2.txt"));
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Файл не найден");
        }
        
    }
    
}
 
class Combo {
    int a,b,i;
     
     DefaultComboBoxModel<String> m1=new DefaultComboBoxModel<String>(new String[]{"1","2","3"});
     DefaultComboBoxModel<String> m2=new DefaultComboBoxModel<String>(new String[]{"4","5","6"});
     
     JComboBox b1,b2;
     JTextField t1;
     JFrame f1;
     
    public Combo(String[] StringArray) { 
        f1 = new JFrame("Box list");
        t1 = new JTextField(10);
        b1 = new JComboBox(StringArray);
        b1.setEditable(true);
        b2 = new JComboBox(StringArray);
        b1.addItemListener(new ItemListener(){
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange()==ItemEvent.SELECTED){
                    b1.insertItemAt(e.getItem(), b1.getItemCount());
                    if(b1.getSelectedIndex()==0){
                         b2.setModel(m1);
                            } else 
                                if(b1.getSelectedIndex()==1){
                                    b2.setModel(m2);
                                }
            }
    }});
    
    f1.add(b1);
    f1.add(b2);
    f1.add(t1);
}
    
}
Миниатюры
Как считанный из файла массив передать в другой класс?  
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
08.02.2014, 19:40 7
1.
Цитата Сообщение от Black_White Посмотреть сообщение
Класс если переименовать, то пишет что не смог найти главный класс.
Есть такая штука "рефакторинг". Только так нужно переименовывать. В эклипсе это Refactor-Rename (предварительно выделив то, что нужно переименовать)
1
2 / 2 / 0
Регистрация: 10.12.2013
Сообщений: 68
08.02.2014, 19:52  [ТС] 8
Цитата Сообщение от soundtrack Посмотреть сообщение
Black_White, У вас достаточно корявое решение с точки зрения построения классов. Особо переделывать не буду, но суть в том что для передачи результатов считывания из файла не нужно создавать в принимающем классе ещё один экземпляр.
Вот немного подправленное решение:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import javax.swing.*;
 
public class TestClass {
    static String [] M = new String [5];
    static Scanner scn;
    public static void main(String[] args) {
        
        openFile();
        readfile();
        out();
        Combo r = new Combo(M);
        r.f1.setLayout(new FlowLayout());
        r.f1.setSize(250, 400);
        r.f1.setVisible(true);
        r.f1.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
        r.f1.setResizable(false);
        r.f1.setLocationRelativeTo(null);
    }
 
    
    private static void out() {
        for (int row=0; row<5; row++){
            System.out.print(M[row]+" ");
        }
    }
 
    private static void readfile() {
        while(scn.hasNext()) {
            for (int row=0; row<5; row++){
                M[row]=scn.next();  
            }
        }   
        
    }
 
    private static void openFile() {
        try {
            scn = new Scanner(new File("res//2.txt"));
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Файл не найден");
        }
        
    }
    
}
 
class Combo {
    int a,b,i;
     
     DefaultComboBoxModel<String> m1=new DefaultComboBoxModel<String>(new String[]{"1","2","3"});
     DefaultComboBoxModel<String> m2=new DefaultComboBoxModel<String>(new String[]{"4","5","6"});
     
     JComboBox b1,b2;
     JTextField t1;
     JFrame f1;
     
    public Combo(String[] StringArray) { 
        f1 = new JFrame("Box list");
        t1 = new JTextField(10);
        b1 = new JComboBox(StringArray);
        b1.setEditable(true);
        b2 = new JComboBox(StringArray);
        b1.addItemListener(new ItemListener(){
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange()==ItemEvent.SELECTED){
                    b1.insertItemAt(e.getItem(), b1.getItemCount());
                    if(b1.getSelectedIndex()==0){
                         b2.setModel(m1);
                            } else 
                                if(b1.getSelectedIndex()==1){
                                    b2.setModel(m2);
                                }
            }
    }});
    
    f1.add(b1);
    f1.add(b2);
    f1.add(t1);
}
    
}
Спасибо! Только кажется дело было в том, что надо было перенести как у вас
Java
1
2
3
openFile();
        readfile();
        out();
вверх над ссылкой!
Спасибо вам!
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
08.02.2014, 21:10 9
Цитата Сообщение от Black_White Посмотреть сообщение
да и когда видео-урок смотрел там парень его не закрывал.
попробуйте не закрыть поток, когда будете что-то записывать в файл.
0
2 / 2 / 0
Регистрация: 10.12.2013
Сообщений: 68
08.02.2014, 21:11  [ТС] 10
Ну буду теперь знать, спасибо!
0
08.02.2014, 21:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2014, 21:11
Помогаю со студенческими работами здесь

Передать массив из одного файла в другой
Как передать переменную значение которой массив из одного файла в другой.

Как передать переменные в другой класс?
Всем привет. Не могу передать переменную в другой класс. Буду благодарна, если вы мне объясните в...

Как правильно передать ссылку в другой класс
Добрый день! Есть класс class ViewController: UIViewController, UITableViewDataSource,...

Как передать ссылку по клику в другой класс?
как передать ссылку по клику в другой класс есть класс парсера вот часть кода protected...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru