Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с панелями 
:(
    Опции темы
Shorr Kan
Дата 12.1.2004, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 30.12.2003

Репутация: нет
Всего: нет



1. Создаю две панели. КОгда они в одном файле - все работает. Когда же они в двух разных файлах (каждая - в своем) - по нажатию на кнопку в одной панели - не могу обратиться в другую. Как это сделать?

2. Создал две панельки, а они ровно пополам делят весь фрейм. Как каждой задать определенный размер?
PM MAIL   Вверх
SmaLL
Дата 12.1.2004, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 557
Регистрация: 17.12.2002
Где: Voronezh

Репутация: 1
Всего: 2



Почитай про LayoutManager's здесь
А лучше выкачай весь тутор.


--------------------
Что ни делается - всЁ к лучшему! SmallWeb
Мой адрес не дом и не улица, мой адрес родной пивзавод!
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 12.1.2004, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Shorr Kan
Модератор: Делаю замечание - один вопрос, один топик. Это правило не из вредности, а для удобства. Сам догадайся, на какой вопрос тебе ответили

1. Без кода помочь невозможно.

2. Почитать про LayoutManager, что посоветовал SmaLL или создать свои панельки (новые классы) и переопределить в них getPreferredSize() и getMinimumSize()
PM MAIL WWW ICQ   Вверх
Shorr Kan
Дата 13.1.2004, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 30.12.2003

Репутация: нет
Всего: нет



Хорошо, в следующий раз буду по одному вопросу задавать. Сейчас продолжаю первый, так как второй ясено и закрыт. Спасибо.

1. JBuilder создает проект из двух файлов. Первый посылать не буду - он, полагаю, для всех понятен. Там я ничего не трогал. Во втором файле я просто поставил ссылки на два моих дополнительных класса. Вот текст этого, второго, файла:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class panelapp extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();

JPanel panel_1;
JPanel panel_2;

//Construct the frame
public panelapp() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}

//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(new GridLayout(1, 2));
this.setBounds(100,100,400,300);
this.setTitle("panelapp");

panel_1 = new panel1();
panel_2 = new panel2();

contentPane.add(panel_1);
contentPane.add(panel_2);
}

//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
}


Теперь текст файла panel1:


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class panel1 extends JPanel {

public panel1() {
this.setBackground(Color.yellow);
}
}


И файл panel2:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class panel2 extends JPanel {

Button but_1;
Button but_2;

public panel2() {
this.setBackground(Color.red);
but_1= new Button("123");
add(but_1);
but_2= new Button("456");
add(but_2);
}

public boolean action(Event evt, Object obj)
{
if(evt.target instanceof Button)
{
if(evt.target.equals(but_1))
{
this.setBackground(Color.red);
}
if(evt.target.equals(but_2))
{
this.setBackground(Color.yellow);
}
}
return false;
}
}


Когда это было в одном файле - все работало прекрасно. Сейчас, конечно, нет. Понятно, почему - глобальных переменных не существует в этом языке. Но как это исправить?


PM MAIL   Вверх
AntonSaburov
Дата 13.1.2004, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Скопировал все три класса по разным файлам в одну директорию и запустил следующее:
Код
javac *.java

Все прекрасно собралось. Правда main нет и посему не запустить. Но все нормально собирается.
PM MAIL WWW ICQ   Вверх
Shorr Kan
Дата 14.1.2004, 06:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 30.12.2003

Репутация: нет
Всего: нет



Файл, содержащий main таков:

import javax.swing.UIManager;

public class twopanel {
boolean packFrame = false;

//Construct the application
public twopanel() {
panelapp frame = new panelapp();
//Validate frames that have preset sizes
//Pack frames that have useful preferred size info, e.g. from their layout
if (packFrame) {
frame.pack();
}
else {
frame.validate();
}
frame.setVisible(true);
}

//Main method
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
new twopanel();
}
}


Но вопрос не в этом. Да, он собирается, но не работают кнопки. Кнопка, находящаяся в одной панели, не воздействует на другую панель. Я так понимаю, что проблема в области видимости. Когда все в одном файле - все понятно и работает. Когда же в разных - перестает работать. Как можно решить эту проблему?
PM MAIL   Вверх
AntonSaburov
Дата 14.1.2004, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата
Я так понимаю, что проблема в области видимости.

Так тогда просто ничего не собралось бы.

Я поиграл - цвет меняется. То все желтенькое, то половина красненькая. Все нормально.
PM MAIL WWW ICQ   Вверх
Shorr Kan
Дата 15.1.2004, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 30.12.2003

Репутация: нет
Всего: нет



Да? А у меня не работает. Может это быть из-за того, что у меня используется jdk1.2.2 ?
PM MAIL   Вверх
Shorr Kan
Дата 15.1.2004, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 30.12.2003

Репутация: нет
Всего: нет



А сейчас у меня вот что происходит:

C:\JBuilder35\jdk1.2.2\bin>javac *.java
Note: panel2.java uses or overrides a deprecated API. Recompile with "-deprecat
ion" for details.
1 warning


Это сообщение отредактировал(а) Shorr Kan - 15.1.2004, 07:33
PM MAIL   Вверх
AntonSaburov
Дата 15.1.2004, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата
А сейчас у меня вот что происходит:

Во-первых, надо запустить javac с флагом -deprecation
javac -deprecation *.java
и посмотреть что именно не так.

А во-вторых, у меня под 1.4.2_03 (самая распоследняя версия - требуют от нас знаете ли) никаких подобных сообщений нет.
PM MAIL WWW ICQ   Вверх
Shorr Kan
Дата 16.1.2004, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 30.12.2003

Репутация: нет
Всего: нет



Я удалил всю возможную яву, даже все IDE... ПОставил SE 1.4.2_03. Но там нет файла javac.exe

Как быть?
PM MAIL   Вверх
Shorr Kan
Дата 16.1.2004, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 30.12.2003

Репутация: нет
Всего: нет



Забыл уточнить - J2RE SE 1.4.2_03. Вот ее я поставил.
(если я все правильно понял, то J2RE и JDK - разные вещи...)
PM MAIL   Вверх
AntonSaburov
Дата 16.1.2004, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата
Забыл уточнить - J2RE SE 1.4.2_03. Вот ее я поставил.
(если я все правильно понял, то J2RE и JDK - разные вещи...)


Надо ставить SDK - только там есть компилятор и еще некторые утилиты.
Где найти - можно посмотреть в FAQ, там указано.
PM MAIL WWW ICQ   Вверх
Sardar
Дата 18.1.2004, 03:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



Не найденна переменная. У меня такое впечатление что ты хочешь изменить цвет панели кнопкой из другой панели.
1) в Javа нет глобальных(никому не пренадлежащих) переменных(и функций тоже) -> Документация -> азы.
2) если ты хочешь изменить свойство обьекта то ты должен иметь на него ссылку, см. выше.
Вот простое решение:
Код

//файл panel2.java
public class panel2 extends JPanel {
JPanel brother;
...
public panel2(JPanel br) {
this.brother=br;
...
}

public boolean action(Event evt, Object obj) {
   if(evt.target instanceof Button) {
       if(evt.target.equals(but_1)) {
           this.setBackground(Color.red);
           brother.setBackground(Color.yellow);
       }
       if(evt.target.equals(but_2)) {
           this.setBackground(Color.yellow);
           brother.setBackground(Color.red);
       }
   }
   return false;
}
//файл panelapp.java
private void jbInit() throws Exception {
...
panel_1 = new panel1();
panel_2 = new panel2(panel_1);
...
}


Shorr Kan мне кажется, что тебе надо повторить Java с самого начала, с каким-нибудь хорошим учебником.
PS. Не открывай второй топик с одинаковой темой.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Shorr Kan
Дата 19.1.2004, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 30.12.2003

Репутация: нет
Всего: нет



О, большое спасибо! Именно это и хотел сделать.

p.s. Только Java мне не повторять надо... А изучать smile.gif . Я только влез в нее.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1014 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.