JComboButton
От: Oval  
Дата: 25.03.06 14:06
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

А как на Swinge сделать таки JComboButton?

Чрезмерное цитирование удалено. Автору предупреждение. Blazkowicz
28.03.06 15:27: Ветка выделена из темы SWT vs SWING
Автор: CheGa
Дата: 25.01.05
— Blazkowicz
Re: JComboButton
От: Blazkowicz Россия  
Дата: 25.03.06 14:59
Оценка:
Здравствуйте, Oval, Вы писали:

O>А как на Swinge сделать таки JComboButton?


А в чем сложности? Как-то по молодости баловался на одном из первых проектов, вроде никаких проблем с этим контролом не было.
Re[2]: JComboButton
От: Oval  
Дата: 27.03.06 15:15
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Oval, Вы писали:


O>>А как на Swinge сделать таки JComboButton?


B>А в чем сложности? Как-то по молодости баловался на одном из первых проектов, вроде никаких проблем с этим контролом не было.

Даже не знаю как к этому подступиться чтобы не потратить на это более двух часов.
Re[3]: JComboButton
От: Blazkowicz Россия  
Дата: 27.03.06 15:28
Оценка:
Здравствуйте, Oval, Вы писали:

O>>>А как на Swinge сделать таки JComboButton?


B>>А в чем сложности? Как-то по молодости баловался на одном из первых проектов, вроде никаких проблем с этим контролом не было.

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

На сколько я понимаю это кнопка из тулбара? По клику вываливаешь window + BoxLayout с кнопками. Размер и положения окна и кнопок определяется по текущему состоянию кнопки на тулбаре.

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

А что на SWT с этим виджетом проблем не было?
Re[4]: JComboButton
От: Oval  
Дата: 28.03.06 09:25
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Oval, Вы писали:


O>>>>А как на Swinge сделать таки JComboButton?


B>>>А в чем сложности? Как-то по молодости баловался на одном из первых проектов, вроде никаких проблем с этим контролом не было.

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

B>На сколько я понимаю это кнопка из тулбара? По клику вываливаешь window + BoxLayout с кнопками. Размер и положения окна и кнопок определяется по текущему состоянию кнопки на тулбаре.


B> Часа за 2 можно сыроватую компаненту набросать. Ну, а чтобы красиво, с модельками, экшнами, конечно 2х часов не хватит.


B>А что на SWT с этим виджетом проблем не было?

Нет не так — слева она должна действовать как обычная кнопка по умолчанию, а справа где стрелочка — выбор других вариантов (Excel-Файл-Открыть... — Далее можно выбрать открыть для чтения открыть как копию и тд)
Re[5]: JComboButton
От: Blazkowicz Россия  
Дата: 28.03.06 09:29
Оценка:
Здравствуйте, Oval, Вы писали:

B>>А что на SWT с этим виджетом проблем не было?


И все же хочется услышать ответ на этот вопрос. 8)

O>Нет не так — слева она должна действовать как обычная кнопка по умолчанию, а справа где стрелочка — выбор других вариантов (Excel-Файл-Открыть... — Далее можно выбрать открыть для чтения открыть как копию и тд)


Никогда не видел подобного контрола. Похоже на меню, только зачем туда кнопки пихать?
Re[5]: JComboButton
От: ivanU  
Дата: 28.03.06 09:33
Оценка:
B>>А что на SWT с этим виджетом проблем не было?
O>Нет не так — слева она должна действовать как обычная кнопка по умолчанию, а справа где стрелочка — выбор других вариантов (Excel-Файл-Открыть... — Далее можно выбрать открыть для чтения открыть как копию и тд)

Если я правильно понял, то это как кнопка "Make project" в тулбаре в JBuilder'e?
Re[6]: JComboButton
От: Oval  
Дата: 28.03.06 09:42
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Oval, Вы писали:


B>>>А что на SWT с этим виджетом проблем не было?


B>И все же хочется услышать ответ на этот вопрос. 8)


Вопрос был безотносительно сложности реализации на SWT.

O>>Нет не так — слева она должна действовать как обычная кнопка по умолчанию, а справа где стрелочка — выбор других вариантов (Excel-Файл-Открыть... — Далее можно выбрать открыть для чтения открыть как копию и тд)


B>Никогда не видел подобного контрола. Похоже на меню, только зачем туда кнопки пихать?


Это не меню, это кнопка на диалоге. И на него пихаются не кнопки, а popup-меню которое возникает если нажать на правую часть кнопки (где стрелка вниз как на JComboBox)
Re[7]: JComboButton
От: Blazkowicz Россия  
Дата: 28.03.06 09:53
Оценка: +1
Здравствуйте, Oval, Вы писали:

O>Это не меню, это кнопка на диалоге. И на него пихаются не кнопки, а popup-меню которое возникает если нажать на правую часть кнопки (где стрелка вниз как на JComboBox)


И что? Сделать 2 кнопки и прикрутить к нему меню. Это более 2х часов?
Re[7]: JComboButton
От: Blazkowicz Россия  
Дата: 28.03.06 10:21
Оценка:
Здравствуйте, Oval, Вы писали:

O>Это не меню, это кнопка на диалоге. И на него пихаются не кнопки, а popup-меню которое возникает если нажать на правую часть кнопки (где стрелка вниз как на JComboBox)


Ну, и о каких 2х часах может идти речь? Дорабатывать поддержку L&F и удобностей по желанию можно сколько угодно.

public class PopupButton extends AbstractButton
{
    private JButton mainButton;
    private JButton arrowButton;
    private JPopupMenu menu;

    public PopupButton(Icon icon)
    {
        this.mainButton = new JButton(icon);
        this.arrowButton = createArrowButton();
        this.menu = new JPopupMenu();
        this.setLayout(new BorderLayout(0, 0));
        this.add(this.mainButton, BorderLayout.CENTER);
        this.add(this.arrowButton, BorderLayout.EAST);

        this.arrowButton.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                Point location = mainButton.getLocation();
                int height = PopupButton.this.getHeight();
                menu.show(PopupButton.this, location.x, location.y + height);
            }
        });
    }

    protected JButton createArrowButton() {
        JButton button = new BasicArrowButton(BasicArrowButton.SOUTH,
                    UIManager.getColor("ComboBox.buttonBackground"),
                    UIManager.getColor("ComboBox.buttonShadow"),
                    UIManager.getColor("ComboBox.buttonDarkShadow"),
                    UIManager.getColor("ComboBox.buttonHighlight"));
        button.setName("ComboBox.arrowButton");
        return button;
    }

    public Action getAction()
    {
        return mainButton.getAction();
    }

    public void setAction(Action action)
    {
        mainButton.setAction(action);
    }

    public JMenuItem add(JMenuItem menuItem) {
        return menu.add(menuItem);
    }

    public JMenuItem add(String s) {
        return menu.add(s);
    }

    public JMenuItem add(Action a) {
        return menu.add(a);
    }

    public static void main(String[] args)
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JToolBar toolBar = new JToolBar();
        PopupButton popupButton = new PopupButton(null);
        popupButton.add("A");
        popupButton.add("B");
        popupButton.add("C");

        toolBar.add(popupButton);
        frame.add(toolBar, BorderLayout.PAGE_START);
        frame.add(new JTextArea(), BorderLayout.CENTER);

        frame.setVisible(true);
    }
}


Так же хочу отметить что я не пишу приложений на Swing уже 3 года.
Re[8]: JComboButton
От: Oval  
Дата: 28.03.06 11:21
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Oval, Вы писали:


O>>Это не меню, это кнопка на диалоге. И на него пихаются не кнопки, а popup-меню которое возникает если нажать на правую часть кнопки (где стрелка вниз как на JComboBox)


B>Ну, и о каких 2х часах может идти речь? Дорабатывать поддержку L&F и удобностей по желанию можно сколько угодно.


B>[java]

B>public class PopupButton extends AbstractButton
B>{
B> private JButton mainButton;
B> private JButton arrowButton;
B> private JPopupMenu menu;

Bingo!
Я люблю Swing
Re[9]: JComboButton
От: Blazkowicz Россия  
Дата: 28.03.06 11:28
Оценка:
Здравствуйте, Oval, Вы писали:

B>>public class PopupButton extends AbstractButton


O>Bingo!

O>Я люблю Swing

Только я вот не уверен, может от JComponent надо было наследовать а не от AbstractButton.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.