Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

создание интерфейса на яве+доступ к базе данных

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
shtuchka



Зарегистрирован: 18.11.2003
Сообщения: 7
Откуда: Самара

СообщениеДобавлено: Чт Май 11 2006 08:02    Заголовок сообщения: создание интерфейса на яве+доступ к базе данных Ответить с цитатой

создала примитивное окно:

import всего чего только можно ))

public class Main {

/**
*MainForm
*/
private static void createAndShowGUI() {
//Make sure we have nice window decorations
JFrame.setDefaultLookAndFeelDecorated(true);

//Create and set up the window.
JFrame frame = new JFrame("Calculate");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Add the ubiquitous "Hello World" label.
JLabel label = new JLabel("Choose variant:");
JLabel label2 = new JLabel("Result:");
// Добавляем


ButtonGroup gr = new ButtonGroup();
JRadioButton rb1 = new JRadioButton("Distance");
rb1.setSelected(true);
JRadioButton rb2 = new JRadioButton("Locations");
gr.add(rb1); gr.add(rb2);

Container pane = frame.getContentPane();
pane.setLayout(new BorderLayout());
pane.add(label, BorderLayout.BEFORE_FIRST_LINE);
pane.add(rb1,BorderLayout.CENTER );
pane.add(rb2, BorderLayout.AFTER_LAST_LINE);
pane.setLayout(new BoxLayout(pane,BoxLayout.Y_AXIS));
JComboBox combo1 = new JComboBox();
JComboBox combo2 = new JComboBox ();
combo1.setMaximumSize(new Dimension(250, 35));
combo2.setMaximumSize(new Dimension(250, 35));
combo1.setMinimumSize(new Dimension(150, 20));
combo2.setMinimumSize(new Dimension(150, 20));

combo1.addItem("1");
combo1.addItem("2");
pane.add(combo1, pane);
pane.add(combo2, pane);

/*
// пытаемся подконнектится к базе
Class.forName( "com.mysql.jdbc.Driver" );
String url = "jdbc:mysql://localhost:3306/MySQL";
// DriverManager.getConnection(url,"root", "");
Connection con =DriverManager.getConnection(url,"root", "");

*/
//

//ADD CheckBox

JCheckBox checkbox = new JCheckBox("KM");
pane.add(checkbox, pane);

pane.add(label2, pane);

JButton button = new JButton("Calc");
pane.add(button, pane);



//Set winfow size
frame.setSize(new Dimension(500, 500));

//Display the window.
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}

не получается 3 вещи: 1. размещение элементов в нужных местах. Не понимаю, как нужно использовать различные Лайауты. Вернее как их совместить друг с другом на одной форме.
2. Добавить слушателей элементов..например кнопки.
3. Хочу, чтоб в выпадающие комбобоксы была добавлена информация из базы данных..например mysql

пишу: Class.forName("com.mysql.jdbc.Driver");
String url =
"jdbc:mysql://localhost:3306/test";
Connection con =
DriverManager.getConnection(url, "root", "");

а он (компилтор) ругается на Class.forName и на Connection con =
DriverManager.getConnection(url, "root", "");
у меня есть файл mysql-connector-java-3.1.12-bin.jar
но чтобы я с ним не пыталась делать..и размещала в директори, запускать пыталась..думала может это установочный файл..ничего не происходит..

карочи..чего делать..с чего начать не знаю. подскажите.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Чт Май 11 2006 10:52    Заголовок сообщения: Ответить с цитатой

Во-первых, Вам нужно прочитать хотябы одну книжку по Джава. Во-вторых, среди Джава-программистов не принято сокращать имена переменных до 2хбукв с циферками. А теперь по порядку:

1. Использовать несколько лайотов в одном контейнере нельзя, но можно добавить в контейнер другой контейнер, например JPanel, и там уже использовать что вам нужно. Можно использовать BoxLayout, он позволяет класть в контейнер Box'ы с вертикальным или горизонтальным расположением элементов. Более подробно о всем этом:
Портянкин И.А. Swing: Эффектные пользовательские интерфейсы. Библиотека программиста. - СПб.: Питер, 2005. - 524с.: ил.

2. JButton.addActionListener(ActionListener). В чем сложность?

3. Хотелось бы вообще услышать как ругается компилятор, впрочем, и так понятно. Смотрим описание методов:

public static Class forName(String className) throws СlassNotFoundException

public static Connection getConnection(String url, String user, String password) throws SQLException

Вы, вообще, об исключениях слышали что-нибудь?
А о том что их обрабатывать надо, что это Вам не C#, здесь исключения надо обрабатывать принудительно.

Резюмируя: Берем книжку, желательно Дж. Гослинга, можно Вязовик, Жилин, последняя есть на http://javagu.ru. И начинаем с Hello World. Потом читаем www.skipy.dev.juga.ru. И уже потом, прочитав Эккеля, задаем тупые вопросы в форум www.juga.ru.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
shtuchka



Зарегистрирован: 18.11.2003
Сообщения: 7
Откуда: Самара

СообщениеДобавлено: Чт Май 11 2006 14:39    Заголовок сообщения: Ответить с цитатой

Многоспасибо! Уважаемый Kefir) Про чтение книг я знаю) Нелло Ворлд сделала) Про причины нечитания книг до сих пор писать не буду . За ссылки и советы спасибо!
а про исключения слышала..на самом деле я привела тот кусок, где у компилятора возникают "сомнения", а весь текст попыточного примера выглядит примерно так:
import java.sql.*;

public class dbTest {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
String url =
"jdbc:mysql://localhost:3306/test";
Connection con =
DriverManager.getConnection(url, "root", "");

ResultSet resultSet;
try {
Statement statement = con.createStatement();
try {
resultSet = statement.executeQuery("select * from моя таблица");
try {
while (resultSet.next()) {
// получать пытаемся данные и
// просмотреть для начала что
// выралось из моей таблицы
}
} finally {
resultSet.close();

}
} finally {
statement.close();
}
} finally {
con.close();
}
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}

у меня основной вопрсо чего делать то с файлом mysql-connector-java-3.1.12-bin.jar и с кучей файлов рядом с ним в директориях расположенных? это куда конкретно нада положить..как установить..или нужно какие где настройки прописать..
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Чт Май 11 2006 19:53    Заголовок сообщения: Ответить с цитатой

Хорошо. Что выдает компилятор, как ругается?

С вышеуказанным jar-файлом нужно сделать вот что:
1. Положить его в каталог на который указывает системная переменная classpath, если она есть. - не рекомендуется
2. В командной строке или в make-файле(.bat, .cmd и т.д.), а соответсвенно и в файле которым вы запускаете прописать параметр -classpath. Подробнее можно узнать запустив javac(java) без параметров. - рекомендуется

Дальше, по стилю:
Обработку ClassNotFoundException нужно сделать ближе к Class.forName(String), а точнее сразу после него. Возможно впоследствии вам придется разделять загрузку драйвера и подключение, будет проще.

Конечно, радует такая забота о закрытии всего и вся, но 3 подряд finally смотрятся уж очень угрожающе. В вашем случаем ожно вообще не париться по поводу закрытия Statement и ResultSet. Потому что если вы закрываете Statement автоматически закрывается ResultSet, а если вы закрываете Connection, автоматически закрывается Statement а за ним и ResulSet. Так что я бы рекомендовал убрать одну конструкция try-finally, относящуюся к ResultSet. Остальные оставить, т.к. возможно использование с одним Connection'ом нескольких Statement, и вообще возможно разделение открытия и закрытия соединения от выполнения запроса.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...