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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не работает JScrollPane 
V
    Опции темы
azz
  Дата 29.4.2006, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 12.9.2005
Где: Munchen (Deutschl and)

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



Суть проблемы в том что у меня есть JScrollPane:
Код

listPanel = new JPanel();
        listPanel.setLayout(null);
        
        scroll = new JScrollPane(listPanel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        plusMinusPanel.add(scroll);
        scroll.setBounds(10, 30, 660, 210);

на listPanel я в ходе рабты добавляю собственные компоненть на осноые JPanel. Проблема в том что JScrollPane не работает.

Если для того чтоб понять мою проблемму приведенного кода мало - пишите, вылажу весь класс.
Зарание спасибо. 
PM MAIL   Вверх
powerOn
Дата 29.4.2006, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



давай весь класс. 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
azz
Дата 29.4.2006, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 12.9.2005
Где: Munchen (Deutschl and)

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



Пажалста!
Код

public class DialogPlusMinus extends JDialog implements ActionListener{
    
    private String carID;
    private Statement statement;
    private ArrayList plusMinusList;
    private JScrollPane scroll;
    private JPanel        plusMinusPanel;
    private JPanel        listPanel;
    private JButton    btnCansel;
    private JButton        btnSave;
    private JLabel        lblSumme;
    
    public DialogPlusMinus(JFrame parent, String carID)
    {
        super(parent, true);
        this.carID = carID;
        setTitle("KFZ Plus/Minus-Position - Fahrzeug: "+carID);
        try {
            statement = DBprovider.getInstance().getStatement();
            
        } catch (SQLException e) {
            
            e.printStackTrace();
        }
        plusMinusList = getPlusMinus();
        initGUI();
        setLocationRelativeTo(parent);
        setVisible(true);
    }

    private void initGUI() {
        setSize(710, 330);
        getContentPane().setLayout(null);
        setResizable(false);
        
    
        plusMinusPanel = new JPanel();
        getContentPane().add(plusMinusPanel);
        plusMinusPanel.setBounds(10, 10, 680, 250);
        plusMinusPanel.setBorder(new TitledBorder(BorderFactory.createTitledBorder(new OvalBorder(2,
                2), "Geben Sie hier Nettobetäge ein, welche Sie dem Kaufpreis auf- bzw. ")));
        plusMinusPanel.setLayout(null);
    
        JLabel tableKopf = new JLabel("Beleg-Konto              Einname          " +
                "Ausgabe          Belegtext                                           Interne Vermerke");
        plusMinusPanel.add(tableKopf); 
        tableKopf.setBounds(40, 10, 700, 20);
        
        listPanel = new JPanel();
        listPanel.setLayout(null);
        
        scroll = new JScrollPane(listPanel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        plusMinusPanel.add(scroll);
        scroll.setBounds(10, 30, 660, 210);
        refuelList();
        
        
        lblSumme = new JLabel("Summe");
        getContentPane().add(lblSumme);
        lblSumme.setBounds(15, 260, 150, 30);
        lblSumme.setFont(new Font("Areal", Font.BOLD, 16));
        
        btnCansel = new JButton("Abbrechen");
        getContentPane().add(btnCansel);
        btnCansel.setBounds(450, 260, 118, 25);
        btnCansel.addActionListener(this);
        
        btnSave = new JButton("Speichern");
        getContentPane().add(btnSave);
        btnSave.setBounds(570, 260, 120, 25);
        btnSave.addActionListener(this);

    }

    private void refuelList() {
        listPanel.removeAll();
        for (int i = 0; i< plusMinusList.size(); i++)
        {
            
            PlusMinusPosition position = (PlusMinusPosition)plusMinusList.get(i);
            listPanel.add(position);
            position.setBounds(0, i*22, 650, 20);
            
        
            
        }
        
    }

    private ArrayList getPlusMinus() {
        ArrayList plusMinus = new ArrayList();
        try {
            ResultSet result = statement.executeQuery("SELECT * FROM PlusMInus WHERE CarID = '"+carID+"'");
            while(result.next())
            {
                PlusMinusPosition dbPosition = new PlusMinusPosition(this, result.getString("BelegKonto"), 
                        result.getDouble("einname"), result.getDouble("ausgabe"),
                        result.getString("BelegText"), result.getString("InterneVermerke"));
                dbPosition.setPreferredSize(new Dimension(800, 22));
                dbPosition.setMinimumSize(new Dimension(800, 22));
                plusMinus.add(dbPosition);

            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return plusMinus;
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(btnCansel))
        {
            setVisible(false);
            dispose();
        }
        
    }
    public void checkNeuPositionNided(PlusMinusPosition position) {
        if (position.equals(plusMinusList.get(plusMinusList.size()-1)))
        {
            PlusMinusPosition newPosition = new PlusMinusPosition(this);
            plusMinusList.add(newPosition);
            refuelList();
        
        }
    }

    private class PlusMinusPosition extends JPanel implements ActionListener, FocusListener
    {
        private DialogPlusMinus            parent;
        private JButton                btnDelite;
        private JTextField                txtBelegKonto;
        private JFormattedTextField    txtEinnahme;
        private JFormattedTextField        txtAusgabe;
        private JTextField                txtBelegText;
        private JTextField                txtInterneVermerke;
        private boolean                geendert = false;
        private boolean                    neuPosition = true;
        
        public PlusMinusPosition(DialogPlusMinus parent)
        {
            setLayout(null);
            this.parent = parent;
        
            btnDelite = new JButton("X");
            add(btnDelite);
            btnDelite.setBounds(0,0, 20, 20);
            
            txtBelegKonto = new JTextField();
            add(txtBelegKonto);
            txtBelegKonto.setBounds(25, 0, 86, 20);
            txtBelegKonto.addFocusListener(this);
            
            txtEinnahme = FormatTextFactory.getMoneyField();
            add(txtEinnahme);
            txtEinnahme.setBounds(120, 0, 68, 20);
            
            txtAusgabe =  FormatTextFactory.getMoneyField();
            add(txtAusgabe);
            txtAusgabe.setBounds(190, 0, 68, 20);
            
            txtBelegText = new JTextField();
            add(txtBelegText);
            txtBelegText.setBounds(265, 0, 168, 20);
            
            txtInterneVermerke = new JTextField();
            add(txtInterneVermerke);
            txtInterneVermerke.setBounds(440, 0, 200, 20);
            
        }
        
        public PlusMinusPosition(DialogPlusMinus parent, String belegKonto, double einnahme, double ausgabe, 
                String belegText, String interneVermerke){
            this(parent);
            txtBelegKonto.setText(belegKonto);
            txtEinnahme.setValue(new Double(einnahme));
            txtAusgabe.setValue(new Double(ausgabe));
            txtBelegText.setText(belegText);
            txtInterneVermerke.setText(interneVermerke);
            neuPosition = false;
        }

        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
            
        }

        public void focusGained(FocusEvent arg0) {
            // TODO Auto-generated method stub
            
        }

        public void focusLost(FocusEvent e) {
            
            if(e.getSource().equals(txtBelegKonto))
            {
                parent.checkNeuPositionNided(this);
            }
            
        }

        public boolean isGeendert() {
            return geendert;
        }

        public void setGeendert(boolean geendert) {
            this.geendert = geendert;
        }

        public boolean isNeuPosition() {
            return neuPosition;
        }

        public void setNeuPosition(boolean neu) {
            this.neuPosition = neu;
        }
        
    }


}


тока учти что класс еше и близко не закончен. 
PM MAIL   Вверх
polosatij
Дата 30.4.2006, 04:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

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




что значит не работает? 

1. не показывает или
2. показывает, но нет функциональности.


попробуй как-нибудь так:

Код


            private JScrollPane jScrollPane1 = new JScrollPane();

        jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        jScrollPane1.getViewport().add(listPanel);
        jScrollPane1.setPreferredSize(new Dimension(416, 45));

        this.add(jScrollPane1);



 


--------------------
PM   Вверх
LSD
Дата 30.4.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Проблема в том, что ты не используешь LayoutManager и не устанавливаешь preferedSize. В таком случае preferedSize для контейнера будет 0, а именно на него и ориентируется JScrollPane.

Вообще это очень плохая практика отказываться от LayoutManager. Весь GUI в Java писался с расчетом на LayoutManager. 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
azz
Дата 30.4.2006, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 12.9.2005
Где: Munchen (Deutschl and)

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



Я прпробовал через Вох - не выходит. Первые 2 которые я получаю из банка - находятся по середине окна а не вверху. Если добавть слишком много элементов то они начинают просто залазить друг на друга, прокрутка не включается.
Подскажите как это решить? Лучше всего с null Layout.
 
P.S.: Где можно вылажить фотку формы?

P.P.S.: А есть ли на этом форуме раздел где бы можно было выкладывать целые классы дая всеобщей отценки? 
PM MAIL   Вверх
LSD
Дата 1.5.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(azz @  30.4.2006,  15:05 Найти цитируемый пост)
Подскажите как это решить? Лучше всего с null Layout.

Тут 2 варианта решения, или вручную устанавливать preferedSize (только надо будет как-то его вычислить и обновлять при изменении размера компонентов). Или разобраться с LayoutManager-ом, лично я в основном использую GridBagLayout.

Цитата(azz @  30.4.2006,  15:05 Найти цитируемый пост)
P.S.: Где можно вылажить фотку формы?

Во время ответа жмешь Предварительный просмотр, там будет возможность прикрепить файл до 50Кб, или используй http://www.imageshack.us/ , там фотки до 1Мб.

Цитата(azz @  30.4.2006,  15:05 Найти цитируемый пост)
P.P.S.: А есть ли на этом форуме раздел где бы можно было выкладывать целые классы дая всеобщей отценки?

Есть отдельный подфорум для оценки готовых программ, а для оценки отдельных классов нет. Можешь вылкладывать здесь, только сам понимаешь что если код очешь большой и навороченный, врядли кто будет в нем подробно разбираться. 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
azz
Дата 3.5.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 12.9.2005
Где: Munchen (Deutschl and)

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



Код

private void refuelList() {
        listPanel.removeAll();
        for (int i = 0; i< plusMinusList.size(); i++)
        {
            PlusMinusPosition position = (PlusMinusPosition)plusMinusList.get(i);
            listPanel.add(position);
            position.setBounds(0, 4+i*22, 650, 20);
        }

        listPanel.setPreferredSize(new Dimension(660, 3+plusMinusList.size()*22));
        
    }

 
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.0628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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