Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите пожалуйста; Java Swing телефонный справочник / 10 сообщений из 10, страница 1 из 1
14.04.2015, 11:47
    #38935723
Carelian88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста; Java Swing телефонный справочник
Задача - написать телефонный справочник. Информация хранится в двух текстовых файлах, в одном имена, во втором номера телефонов. Почти месяц решал проблему с кириллицей, написал кое-как, по отдельности сам справочник работает при заданных в программе массивах имён и номеров, но надо его переделать на чтение из файлов. На промежуточной стадии у меня ошибки, может кто невооруженным глазом сразу подскажет в чём проблема? Я новичок.

Код: 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.
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.io.*;
class Filetst{
public  static String[] fileo() throws Exception{
	String names[];
	String str=" ";
	try{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("data.txt"), "windows-1251"));
         while ((str = br.readLine()) != null) {
            str = str + br.readLine();
			} 
		}catch(Exception e){
         e.printStackTrace();
		}			
names=str.split(":");
return names;
}
}

class frm implements ListSelectionListener{

JList<String> jl;
JLabel jlabstat;
JLabel jlab;
JScrollPane jscp;


frm(){
	


JFrame frame = new JFrame("Phone");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 350);
frame.setLayout(new FlowLayout());

jl = new JList<String>(n);
jl.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jscp = new JScrollPane(jl);
jscp.setPreferredSize(new Dimension(120,200));
jlabstat = new JLabel("Выберите имя:");
jlab = new JLabel(" ");
jl.addListSelectionListener(this);
frame.add(jlabstat);
frame.add(jscp);
frame.add(jlab);
frame.setVisible(true);
}
	
   String[] n = Filetst.fileo();
	

public void valueChanged(ListSelectionEvent le) {

int idx = jl.getSelectedIndex();

if(idx!=-1) jlab.setText("<html><b><font size='5'>"+n[idx]+"</font></b><hr></html>");
}


public static void main(String args[]){
EventQueue.invokeLater(new Runnable(){public void run()
{
new frm();
}

});
}

}




идея в том что-бы функция читала массив имён в файле и из этого автоматически генерировала JList, а его обработчик событий в JLable показывал номера.
...
Рейтинг: 0 / 0
14.04.2015, 12:13
    #38935748
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста; Java Swing телефонный справочник
Банальное отсутствие форматирование и следования какому-либо Coding Convention отбивает все желание читать код. Вы бы хоть проблемы озвучили.
...
Рейтинг: 0 / 0
14.04.2015, 12:24
    #38935764
Carelian88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста; Java Swing телефонный справочник
Blazkowicz,

Код: java
1.
2.
3.
frm.java:53: error: unreported exception Exception; must be caught or declared
o be thrown
   String[] n = Filetst.fileo();



такое впечатление что оно хочет что-бы я try catch в каждую строку поместил(
содержимое data.txt: Игорь:Вера:Воля:Мама
...
Рейтинг: 0 / 0
14.04.2015, 12:27
    #38935767
Carelian88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста; Java Swing телефонный справочник
Carelian88,

если на мгновенье забыть про этот класс:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
class Filetst{
public  static String[] fileo() throws Exception{
	String names[];
	String str=" ";
	try{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("data.txt"), "windows-1251"));
         while ((str = br.readLine()) != null) {
            str = str + br.readLine();
			} 
		}catch(Exception e){
         e.printStackTrace();
		}			
names=str.split(":");
return names;
}
}



дальше идёт конструтор основного класса, как мне в конструктор основного класса втулить переменную массив names?
...
Рейтинг: 0 / 0
14.04.2015, 12:28
    #38935768
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста; Java Swing телефонный справочник
Carelian88,

Ах, оно ещё даже не компилируется. Ну в Runnable нужно try catch добавить. А можно просто перейти на RuntimeException чтобы везде не объявлять.
throws Exception по-моему вообще можно выкинуть, уже ведь IOException отловлен.
В целом код - набор граблей.
...
Рейтинг: 0 / 0
14.04.2015, 12:47
    #38935794
Carelian88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста; Java Swing телефонный справочник
Blazkowicz,

дело в том что без throws exception не получится сделать это: BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("data.txt"), "windows-1251"));

а так бы я это засунул бы в конструктор без отдельного класса
...
Рейтинг: 0 / 0
14.04.2015, 12:52
    #38935801
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста; Java Swing телефонный справочник
Carelian88дело в том что без throws exception не получится сделать это: BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("data.txt"), "windows-1251"));

Вы заблуждаетесь. У вас уже try...catch присутствует.
...
Рейтинг: 0 / 0
14.04.2015, 13:05
    #38935822
Carelian88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста; Java Swing телефонный справочник
Blazkowicz,

переписал код, убрал дополнительный класс и соответственно throws Exception

Код: 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.
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.io.*;


	

class frm implements ListSelectionListener{

JList<String> jl;
JLabel jlabstat;
JLabel jlab;
JScrollPane jscp;
String names[];
String str=null;

frm(){
	
	try{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("data.txt"), "windows-1251"));
         while ((str = br.readLine()) != null) {
            str = str + br.readLine();
			} 
		}catch(Exception e){}			
names=str.split(":");

	


JFrame frame = new JFrame("Phone");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 350);
frame.setLayout(new FlowLayout());

jl = new JList<String>(names);
jl.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jscp = new JScrollPane(jl);
jscp.setPreferredSize(new Dimension(120,200));
jlabstat = new JLabel("Выберите имя:");
jlab = new JLabel(" ");
jl.addListSelectionListener(this);
frame.add(jlabstat);
frame.add(jscp);
frame.add(jlab);
frame.setVisible(true);
}
public void valueChanged(ListSelectionEvent le) {

int idx = jl.getSelectedIndex();

if(idx!=-1) jlab.setText("<html><b><font size='5'>"+names[idx]+"</font></b><hr></html>");
}


public static void main(String args[]){
EventQueue.invokeLater(new Runnable(){public void run(){new frm();}

});
}

}



компиляция норм при запуске:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at frm.<init>(frm.java:27)
        at frm$1.run(frm.java:58)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
...
Рейтинг: 0 / 0
14.04.2015, 13:10
    #38935830
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста; Java Swing телефонный справочник
Научитесь пользоваться дебаггером.
Отложите в сторону проект и займитесь чтением книг и уроков. NullPointerException это основа работы с объектами и ссылками в Java.
...
Рейтинг: 0 / 0
14.04.2015, 13:14
    #38935834
Carelian88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста; Java Swing телефонный справочник
Blazkowicz,

Спасибо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите пожалуйста; Java Swing телефонный справочник / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]