2015-03-23 3 views
2

Я пытаюсь установить координаты Jbutton в Blue J, я пробовал button.setbounds, но он говорит, что этого не существует. Это то, что я до сих пор:Как установить координаты JButton в Blue J?

public void makeButtons() 
{ 
    // create buttons 
    buttonL1 = new JButton("Button L1"); 
    add(buttonL1); 
    buttonL1.setbounds(220, 180, (int) rHeight, (int) rWidth); 
    buttonL2 = new JButton("Button L2"); 
    add(buttonL2); 
    buttonR3 = new JButton("Button R3"); 
    c.add(buttonR3); 
    buttonR4 = new JButton("Button R4"); 
    c.add(buttonR4); 

    ButtonHandler handler = new ButtonHandler(); 
    buttonL1.addActionListener(handler); 
    buttonL2.addActionListener(handler); 
    buttonR3.addActionListener(handler); 
    buttonR4.addActionListener(handler); 
    c.repaint(); 
} 



/** 
* Button Event Handling 
*/ 
private class ButtonHandler implements ActionListener { 
    public void actionPerformed(ActionEvent e) 
    { 
    JOptionPane.showMessageDialog(null, 
     "You pressed: " + e.getActionCommand()); 
    } 
} 
+3

Короткий ответ - нет. Избегайте использования макетов «null», идеальные макеты пикселей - это иллюзия в современном дизайне ui. Слишком много факторов, которые влияют на индивидуальный размер компонентов, ни один из которых вы не можете контролировать. Swing был разработан для работы с менеджерами компоновки в ядре, отбрасывая их, не приведет к возникновению проблем и проблем, которые вы будете тратить все больше и больше времени на исправление. См. [Укладка компонентов в контейнере] (http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html) для лучшего решения. – MadProgrammer

ответ

3

Вы правильны, setbounds не существует, но setBounds(...) фактически делает - вопросы капитализации как и умение смотреть на этот вопрос в API. Но, сказав это, не используйте макеты null, так как это приводит к созданию жестких графических интерфейсов, что может хорошо выглядеть на одном компьютере, используя эту ОС и разрешение экрана, но будет выглядеть ужасно во всем мире, создаст JPanels, которые не будут 't в JScrollPanes и привести к негибким графическим интерфейсам, которые являются королевскими ведьмами для отладки или улучшения. Вместо этого используйте менеджеров компоновки, чтобы помочь вам разместить компоненты.

Также обратите внимание, что ваш вопрос не имеет ничего общего с BlueJ, который не что иное, как инструмент IDE, который вы используете для создания программы, и все, что связано с Java и Swing.

+0

Ahhh, Спасибо! – JL9

+0

@ JL9: снова ** не использовать ** использованиеBound. Это знаменует вашу программу как программу новичков-кошмаров и в конце концов вас укусит. –

+0

@immibis: это или должен быть семейный сайт. –

Смежные вопросы