Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Oval, Вы писали:
O>>А как на Swinge сделать таки JComboButton?
B>А в чем сложности? Как-то по молодости баловался на одном из первых проектов, вроде никаких проблем с этим контролом не было.
Даже не знаю как к этому подступиться чтобы не потратить на это более двух часов.
Здравствуйте, Oval, Вы писали:
O>>>А как на Swinge сделать таки JComboButton?
B>>А в чем сложности? Как-то по молодости баловался на одном из первых проектов, вроде никаких проблем с этим контролом не было. O>Даже не знаю как к этому подступиться чтобы не потратить на это более двух часов.
На сколько я понимаю это кнопка из тулбара? По клику вываливаешь window + BoxLayout с кнопками. Размер и положения окна и кнопок определяется по текущему состоянию кнопки на тулбаре.
Часа за 2 можно сыроватую компаненту набросать. Ну, а чтобы красиво, с модельками, экшнами, конечно 2х часов не хватит.
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Oval, Вы писали:
O>>>>А как на Swinge сделать таки JComboButton?
B>>>А в чем сложности? Как-то по молодости баловался на одном из первых проектов, вроде никаких проблем с этим контролом не было. O>>Даже не знаю как к этому подступиться чтобы не потратить на это более двух часов.
B>На сколько я понимаю это кнопка из тулбара? По клику вываливаешь window + BoxLayout с кнопками. Размер и положения окна и кнопок определяется по текущему состоянию кнопки на тулбаре.
B> Часа за 2 можно сыроватую компаненту набросать. Ну, а чтобы красиво, с модельками, экшнами, конечно 2х часов не хватит.
B>А что на SWT с этим виджетом проблем не было?
Нет не так — слева она должна действовать как обычная кнопка по умолчанию, а справа где стрелочка — выбор других вариантов (Excel-Файл-Открыть... — Далее можно выбрать открыть для чтения открыть как копию и тд)
Здравствуйте, Oval, Вы писали:
B>>А что на SWT с этим виджетом проблем не было?
И все же хочется услышать ответ на этот вопрос. 8)
O>Нет не так — слева она должна действовать как обычная кнопка по умолчанию, а справа где стрелочка — выбор других вариантов (Excel-Файл-Открыть... — Далее можно выбрать открыть для чтения открыть как копию и тд)
Никогда не видел подобного контрола. Похоже на меню, только зачем туда кнопки пихать?
B>>А что на SWT с этим виджетом проблем не было? O>Нет не так — слева она должна действовать как обычная кнопка по умолчанию, а справа где стрелочка — выбор других вариантов (Excel-Файл-Открыть... — Далее можно выбрать открыть для чтения открыть как копию и тд)
Если я правильно понял, то это как кнопка "Make project" в тулбаре в JBuilder'e?
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Oval, Вы писали:
B>>>А что на SWT с этим виджетом проблем не было?
B>И все же хочется услышать ответ на этот вопрос. 8)
Вопрос был безотносительно сложности реализации на SWT.
O>>Нет не так — слева она должна действовать как обычная кнопка по умолчанию, а справа где стрелочка — выбор других вариантов (Excel-Файл-Открыть... — Далее можно выбрать открыть для чтения открыть как копию и тд)
B>Никогда не видел подобного контрола. Похоже на меню, только зачем туда кнопки пихать?
Это не меню, это кнопка на диалоге. И на него пихаются не кнопки, а popup-меню которое возникает если нажать на правую часть кнопки (где стрелка вниз как на JComboBox)
Здравствуйте, Oval, Вы писали:
O>Это не меню, это кнопка на диалоге. И на него пихаются не кнопки, а popup-меню которое возникает если нажать на правую часть кнопки (где стрелка вниз как на JComboBox)
И что? Сделать 2 кнопки и прикрутить к нему меню. Это более 2х часов?
Здравствуйте, 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 года.
Здравствуйте, 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;