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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать вот такое pop up меню? 
:(
    Опции темы
unkis
Дата 14.6.2006, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ребята как зделать во такое меню и вставить туда свою JPanel

вот картинуи.
user posted image

и вот

user posted image

а вот здесь можно вживую попробывать

http://link2.map24.com/?lid=28e2befd&c...mp;maptype=JAVA

Зарания благодарен. 


--------------------
www.unkis.com
PM MAIL WWW   Вверх
powerOn
Дата 14.6.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Можно поэкспериментировать с JPopupMenu
Вот пример внедрения JPanel в JPopupMenu.

Простая панелька содержащая компоненты:
Код

public class NewJPanel extends javax.swing.JPanel {
    public NewJPanel() {
        initComponents();
    }

    private void initComponents() {
        jSlider1 = new javax.swing.JSlider();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jCheckBox1 = new javax.swing.JCheckBox();

        setLayout(new java.awt.BorderLayout());

        add(jSlider1, java.awt.BorderLayout.SOUTH);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jLabel1.setText("jLabel1");
        add(jLabel1, java.awt.BorderLayout.NORTH);

        jButton1.setText("jButton1");
        add(jButton1, java.awt.BorderLayout.WEST);

        jCheckBox1.setText("jCheckBox1");
        jCheckBox1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jCheckBox1.setMargin(new java.awt.Insets(0, 0, 0, 0));
        add(jCheckBox1, java.awt.BorderLayout.EAST);

    }
    private javax.swing.JButton jButton1;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JSlider jSlider1;
    private javax.swing.JTable jTable1;
}


Пример использования: 
Код

public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
        initComponents();
// Создаем и добавляем панель в меню.
        jPopupMenu1.add(new NewJPanel());
    }

    private void initComponents() {
        jPopupMenu1 = new javax.swing.JPopupMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                formMouseClicked(evt);
            }
        });

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(0, 300, Short.MAX_VALUE)
        );
        pack();
    }
    
    private void formMouseClicked(java.awt.event.MouseEvent evt) {
        if (evt.getButton() == evt.BUTTON3) {
            jPopupMenu1.show(this, evt.getX(), evt.getY());
        }
    }
    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
    private javax.swing.JPopupMenu jPopupMenu1;
    
}
 


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

PM MAIL   Вверх
unkis
Дата 14.6.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо за ответ, а что ето за package  такой  org.jdesktop.layout.GroupLayout, у меня такого нет 


--------------------
www.unkis.com
PM MAIL WWW   Вверх
powerOn
Дата 14.6.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Эх...  smile Это все NetBeans... исправляюсь:
Код

private void initComponents() {
        jPopupMenu1 = new javax.swing.JPopupMenu();
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                formMouseClicked(evt);
            }
        });
        pack();
    }
 


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

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


Опытный
**


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

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



ну ето не совсем такое окошко которое показанно на рисунке. ну всерано спасибо 


--------------------
www.unkis.com
PM MAIL WWW   Вверх
powerOn
Дата 14.6.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(unkis @  14.6.2006,  22:36 Найти цитируемый пост)
ну ето не совсем такое окошко которое показанно на рисунке.

я показал принцип, ну а ты доработаешь до нужного результата  smile 
 


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

PM MAIL   Вверх
unkis
Дата 14.6.2006, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



спасибо,  вот я как раз и не понимаю как сделаьб чтобы оно выезжала с низу в верх и обратно пряталось.
это и есть основная проблема.
помогите плиз. 


--------------------
www.unkis.com
PM MAIL WWW   Вверх
unkis
Дата 20.6.2006, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята пыиаьсь на понель Загрузит кариинку.
но почемуто, с первого раза не срабатывает размер.
тоесть по вызову Popup создаётся понель узнайтся размер картинки устанавливается размер.

когда второй раз нажимаю то всё ок. почему и что я делаю не так?


Код

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

/**
 * Created by IntelliJ IDEA.
 * User: WatchCat
 * Date: 15.06.2006
 * Time: 21:18:21
 * To change this template use File | Settings | File Templates.
 */
public class NPanel extends JPanel{
    private static int fontsize = 35;
    private static String chars[] = {"A","B","C","D","E","F"};
    private Font fnt = new Font("Arial",Font.BOLD,fontsize);
    private int idx = 0;
    Image img = Toolkit.getDefaultToolkit().getImage("images/compass.gif");
    
    Dimension psize = new Dimension();
    
    public NPanel() {
//        this.img= Toolkit.getDefaultToolkit().getImage("images/compass.gif");
//        int width = img.getWidth(this);
//        int heigth = img.getHeight(this);
//        System.out.println(width+"\t"+heigth);
//        this.setSize(500,500);
    }

    @Override public Dimension getPreferredSize(){
        
        int width = img.getWidth(this);
        int heigth = img.getHeight(this);
    
        FontMetrics fm = getFontMetrics(fnt);
        int h = fm.getHeight();
        int w = h + 2;
        System.out.println(width+"\t"+heigth);
        //psize.setSize(w,h);
        //psize.setSize(width,heigth);
        psize.setSize(width,heigth);
        return psize;
    }

    @Override public void paint(Graphics g){
        super.paint(g);
        
        
        Rectangle r = getBounds();
        FontMetrics fm = getFontMetrics(fnt);
        g.setFont(fnt);
        int x = (r.width - fm.stringWidth(chars[idx]))/2;
        int y = (r.height)/2 + fm.getDescent() ;
        y += 5; // ïî÷åìóòî íå ïîïàäàþ â ñåðåäèíó ?
        g.drawString(chars[idx],x,y);
    }

//    @Override
//    public void update(Graphics g){
//        paint(g);
//    }

//    public void incIdx(){
//        idx ++;
//        if(idx >= chars.length) idx = 0;
//        repaint();
//    }
//
//    public void decIdx(){
//        idx --;
//        if(idx < 0 ) idx = chars.length - 1;
//        repaint();
//    }
}

 


--------------------
www.unkis.com
PM MAIL WWW   Вверх
powerOn
Дата 20.6.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(unkis @  20.6.2006,  17:44 Найти цитируемый пост)
по вызову Popup создаётся понель узнайтся размер картинки устанавливается размер.


Устанавливается размер чего? И где ( в коде) ?

Добавлено @ 18:38 
Еще FAQ можно изучить 


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

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


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

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