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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Меню отображается под treeview 
:(
    Опции темы
Робби
Дата 28.9.2011, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день. На java программирую совсем недавно, стокнулся с проблемой:
Если в созданном окне нажать мышью на полосе прокрутки в treeview, то меню начинает открываться под treeview. если нажать на любой элемент дерева (папку, лист), то меню начинает отображаться нормально. Может кто сталкивался с подобным, как исправить поведение?

Код

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.ScrollPane;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.prefs.Preferences;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.LookAndFeel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.plaf.ButtonUI;
import javax.swing.plaf.ComboBoxUI;
import javax.swing.plaf.MenuBarUI;
import javax.swing.plaf.MenuItemUI;
import javax.swing.plaf.ToolBarUI;
import javax.swing.plaf.TreeUI;
import javax.swing.tree.DefaultMutableTreeNode;

public class test extends WindowAdapter {
    public static void main(String[] args){
        new test().Show();
    }
    public static final String hiddenKey="-h";
    public static boolean hiddenKeyActivated=false; 
    private JFrame mw;
    private JButton btAdd=new JButton("Create");
    private JButton btCreate=new JButton("Create");
    private JButton btDelete=new JButton("Delete");
    private JButton btUp=new JButton("Up");
    private JButton btDown=new JButton("Down");
    //private JButton btSaveItem=new JButton("Save Item");
    private JMenuItem jmOpenJSONOptions=new JMenuItem("Open Options");
    private JMenuItem jmOpen1=new JMenuItem("Import JSON...");
    private JMenuItem jmOpen2=new JMenuItem("Open...");
    private JMenuItem jmSave1=new JMenuItem("Export JSON...");
    private JMenuItem jmSave3=new JMenuItem("Save as...");
    private JMenuItem jmSave22=new JMenuItem("Save...");
    private JMenuItem jmExit=new JMenuItem("Exit");
    private DefaultMutableTreeNode nActionsHead=new DefaultMutableTreeNode("Scheduler");
    private JTree jt=new JTree(nActionsHead);
    private JComboBox selType=new JComboBox(new String[]{"Action","Option"});
    private JTextField txtType=new JTextField("0x0");
    public static boolean changed=false;
    public static test UI=null;
    private JPanel editorPanel=new JPanel();
    private JToolBar  toolbar=new JToolBar() ; 
    private JPanel top=new JPanel();
    Preferences s=Preferences.userRoot();
    public Class<?> WindowsButtonUI=null;
    public Class<?> WindowsComboBoxUI=null;
    public Class<?> WindowsLookAndFeel=null;
    public Class<?> WindowsMenuBarUI=null;
    public Class<?> WindowsMenuItemUI=null;
    public Class<?> WindowsToolBarUI=null;
    public Class<?> WindowsTreeUI=null;
    public void Show(){
        try {
            WindowsButtonUI=Class.forName("com.sun.java.swing.plaf.windows.WindowsButtonUI");
            WindowsComboBoxUI=Class.forName("com.sun.java.swing.plaf.windows.WindowsComboBoxUI");
            WindowsLookAndFeel=Class.forName("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            WindowsMenuBarUI=Class.forName("com.sun.java.swing.plaf.windows.WindowsMenuBarUI");
            WindowsMenuItemUI=Class.forName("com.sun.java.swing.plaf.windows.WindowsMenuItemUI");
            WindowsToolBarUI=Class.forName("com.sun.java.swing.plaf.windows.WindowsToolBarUI");
            WindowsTreeUI=Class.forName("com.sun.java.swing.plaf.windows.WindowsTreeUI");
            UIManager.setLookAndFeel((LookAndFeel) WindowsLookAndFeel.newInstance());
        } catch (UnsupportedLookAndFeelException e) {

        } catch (ClassNotFoundException e) {

        } catch (InstantiationException e) {

        } catch (IllegalAccessException e) {

        }
        btDelete.setEnabled(false);
        btUp.setEnabled(false);
        btDown.setEnabled(false);
        btAdd.setEnabled(false);
        jmOpen1.setEnabled(false);
        jmOpen2.setEnabled(false);
        jmSave1.setEnabled(false);
        jmSave3.setEnabled(false);
        selType.setEditable(true);
        //main menu
        JMenuBar mb=new JMenuBar();
        JMenu pm=new JMenu("File");
        pm.add(jmOpen2);
        pm.add(jmSave22);
        pm.add(jmSave3);
        pm.addSeparator();
        pm.add(jmOpen1);
        pm.add(jmSave1);
        pm.addSeparator();
        pm.add(jmOpenJSONOptions);
        pm.addSeparator();
        pm.add(jmExit);
        mb.add(pm);
        mw=new JFrame();

        ScrollPane sp=new ScrollPane();
        sp.add(jt);
        sp.setBounds(0, 0, 300, 400);
        top.setLayout(new BorderLayout());
        top.add(sp,BorderLayout.WEST);
        
        toolbar.add(btAdd);
        toolbar.add(btDelete);
        top.add(toolbar,BorderLayout.NORTH);
        
        selType.setVisible(false);
        txtType.setVisible(false);
        btCreate.setVisible(false);
        top.add(editorPanel,BorderLayout.CENTER);
        
        mw.add(top,BorderLayout.CENTER);
        mw.setJMenuBar(mb);
        //register listeners
        mw.addWindowListener(this);
        
        //show
        mw.setBounds(0, 0, 800, 400);
        mw.setMaximumSize(new Dimension(900,600));
        mw.setResizable(false);
        mw.setVisible(true);
        mw.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 

        System.setErr(null);
        System.setOut(null);
        
        try{
            mb.setUI((MenuBarUI) WindowsMenuBarUI.newInstance());
            jt.setUI((TreeUI) WindowsTreeUI.newInstance());
            //jt.setBorder(new EmptyBorder(0, 0, 0, 0));
            toolbar.setUI((ToolBarUI) WindowsToolBarUI.newInstance());
            jmOpenJSONOptions.setUI((MenuItemUI) WindowsMenuItemUI.newInstance());
            jmOpen1.setUI((MenuItemUI) WindowsMenuItemUI.newInstance());
            jmOpen2.setUI((MenuItemUI) WindowsMenuItemUI.newInstance());
            jmSave1.setUI((MenuItemUI) WindowsMenuItemUI.newInstance());
            jmSave22.setUI((MenuItemUI) WindowsMenuItemUI.newInstance());
            jmSave3.setUI((MenuItemUI) WindowsMenuItemUI.newInstance());
            jmExit.setUI((MenuItemUI) WindowsMenuItemUI.newInstance());
            selType.setUI((ComboBoxUI) WindowsComboBoxUI.newInstance());
            btCreate.setUI((ButtonUI) WindowsButtonUI.newInstance());
        }catch(Exception e){
            
        }
        test.UI=this;
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
        nActionsHead.add(new DefaultMutableTreeNode("1"));
    }
    @Override
    public void windowClosing(WindowEvent ev){
        if(changed==false){
            System.exit(0); 
        }else{
            if(JOptionPane.showConfirmDialog(mw, "There is unsaved data. Are you sure you want to exit?", "", JOptionPane.YES_NO_OPTION)==JOptionPane.NO_OPTION){
                
            }else{
                System.exit(0); 
            }
        }
    }
}


PM MAIL   Вверх
jk1
Дата 29.9.2011, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

 как исправить поведение?

Не использовать вместе AWT и Swing компоненты. В Вашем конкретном случае надо использовать javax.swing.JScrollPane вместо java.awt.ScrollPane, то есть вместо
Код

ScrollPane sp=new ScrollPane();
sp.add(jt);

надо писать
Код

JScrollPane sp = new JScrollPane(jt);


Кстати, задавать UI для каждого элемента абсолютно необязательно. Достаточно задать LAF для всего приложения
Код

 public static void main(String[] args) throws UnsupportedLookAndFeelException {
        UIManager.setLookAndFeel(new WindowsLookAndFeel());
        new test().Show();
    }



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

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

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


 




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


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

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