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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Элементы пользовательского интерфейса, Странный баг 
:(
    Опции темы
vladt89
Дата 27.8.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день всем.

Программа описывает просто некоторые элементы пользовательского интерфейса, но есть 2 проблемы:
1)При раскрытии окна до полных размеров экрана элементов становится ужасно много, на много больше чем я написал....
Почему?

2)137 строчка. Если  убрать коммент, то происходит мигание данного элемента слева вверху. 
Почему?
Извините за столь длинный код. Просто может где-то опечатка есть, а я не заметил....Правда. компилятор тоже...
Код

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

public class test
{
    public static void main(String[] args)
    {
        JFrame frame = new ImageViewerFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

class ImageViewerFrame extends JFrame
{
    private JLabel label;
    private JFileChooser chooser;
    
    public ImageViewerFrame()
    {
        setTitle("MATH'S TEST");
        setSize(1000,900);
        
        label = new JLabel();
        add(label);

        chooser = new JFileChooser();
        chooser.setCurrentDirectory(new File("."));

        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        setResizable(true);          //нельзя менять размеры окна
        setCursor(WAIT_CURSOR);    //тип курсора

        setLayout( new BorderLayout() );  //раскладка элементов  //if значение null, то все пропадает, почему?((
        
        JMenu menu = new JMenu("Файл");
        menuBar.add(menu);

        JMenu menu_2 = new JMenu("Правка");
        menuBar.add(menu_2);

        JMenuItem item_2 = new JMenuItem("zenit");
        menu_2.add(item_2);

        JMenuItem openItem = new JMenuItem("Open");
        menu.add(openItem);
        openItem.addActionListener
        (new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                int result = chooser.showOpenDialog(null);
                if(result == JFileChooser.APPROVE_OPTION)
                {
                    String name = chooser.getSelectedFile().getPath();
                    label.setIcon(new ImageIcon(name));
                }
            }
        });
        
        JMenuItem exitItem = new JMenuItem("Exit");
        menu.add(exitItem);
        exitItem.addActionListener
        (new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                System.exit(0);
            }
                });
                framePanel panel = new framePanel();
        add(panel); 
    }
}

class framePanel extends JPanel
{

     String str = "What's your name?";
     int answer = 0;
    int Result = 4444440;
    TextField fieldAnswer, fieldResult;
                                                  
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
         g.setColor(Color.white);
         g.drawString(str, 100, 250);
        g.drawString("answer = " + answer, 100, 200);
        makeButton("black font", Color.black);
                                          
        add(fieldAnswer = new TextField("answer", 40));
        JButton b = new JButton("проверить");
        add(b);
        b.addActionListener
        (new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                String label = event.getActionCommand();
                if (label.equals("проверить"))
                  {
                    //fieldResult = fieldAnswer.getText().trim();
                    fieldResult.setText(new Integer(Result).toString());    
                }
            }
        });
        add(fieldResult = new TextField("", 30));
        //fieldResult.setSize(20,20);

        Checkbox box_1 = new Checkbox("he-he)))))____true");
        box_1.setState(true);
        add(box_1);

        new Scrollbar(Scrollbar.VERTICAL);        

    //    setFont(Font.italic);   не работает
        Cursor curs = new Cursor(Cursor.HAND_CURSOR);
        Label label = new Label("Label", Label.CENTER);
        label.setCursor(curs);    //При наведении HAND_CURSOR
                setForeground(Color.GREEN);
        add(label);

        setForeground(Color.red);
    //    String word = "String word";
                                
        List list = new List();
        //list.setColor(Color.blue);
        list.addItem("First");
        list.addItem("Second");
        list.select(1);
    //    list.setSize(50,50);            //та жк фигня, что и с раскрывающимся списком
        add(list);
        

        List list2 = new List(3, true);        //true - можно выбирать несколько
        list2.addItem("First");  
        list2.addItem("Second");
        list2.addItem("Third");
        list2.addItem("Forth");
        list2.select(0);
    //    list2.setSize(50,50);
        add(list2);
        
        Scrollbar scroll_l = new Scrollbar();
        add(scroll_l);

        TextArea text = new TextArea("TextArea",10,10);
        text.setEditable(false);    //нельзя изменить текст
        add(text);
        }
    public void makeButton(String name, final Color backgroundColor)
    {
        JButton b = new JButton(name);
        add(b);
           b.addActionListener
        (new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                setBackground(backgroundColor);
            }
        });
    }
}                 


Попытки решения проблемы:
1)из знакомых(у кого спрашивал) никто не сталкивался с такими проблемами
2)книги не помогают, так как в них не пишут, либо пишут очень мало о решении таких проблем
3)по форумам смотрел, ничего подобного, к сожалению не нашел.

При компиляции ошибок программа не выдает.

Дайте совет либо ссылку где можно прочитать решение проблемы.
PM MAIL WWW   Вверх
Kangaroo
Дата 27.8.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(vladt89 @  27.8.2008,  14:14 Найти цитируемый пост)
137 строчка. Если  убрать коммент, то происходит мигание данного элемента слева вверху. 

Я должен высчитывать 137ю строчку? Оформи код нормально, сейчас у тебя закрывающий тег неправильный - нужно [/code]


--------------------
Lost....
PM MAIL MSN   Вверх
AntonSaburov
Дата 27.8.2008, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


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

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



1. Раз используется BorderLayout то все элементы по умолчанию кладутся в центр - почитай Что такое LayoutManager

2. Если ты используешь LayoutManager, то размеры впрямую установить нельзя - можно переопределять методы getPreferredSize(), getMaximumSize(), getMinimumSize(). И тогда сам лэйаут будет распределять элементы по своему алгоритму и возможным размерам компонентов.
PM MAIL WWW ICQ   Вверх
dorogoyIV
Дата 28.8.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

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



нафига все компоненты в методе paintComponent  smile 
PM MAIL   Вверх
vladt89
Дата 31.8.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а это плохо, что компоненты в методе paintComponent?
PM MAIL WWW   Вверх
dorogoyIV
Дата 31.8.2008, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

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



Цитата(vladt89 @  31.8.2008,  22:04 Найти цитируемый пост)
а это плохо, что компоненты в методе paintComponent?

плохо, вынеси их в другой метод или в конструктор.
и используй swing-компоненты, а не awt
PM MAIL   Вверх
cube
Дата 1.9.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(dorogoyIV @ 31.8.2008,  22:34)
Цитата(vladt89 @  31.8.2008,  22:04 Найти цитируемый пост)
а это плохо, что компоненты в методе paintComponent?

плохо, вынеси их в другой метод или в конструктор.
и используй swing-компоненты, а не awt

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

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

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


 




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


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

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