2010-05-27 2 views
0

Я работаю над графическим интерфейсом в Java и застревает с перемещением объекта.Нужна помощь с графическим интерфейсом в java

Пожалуйста, посетите это видео youtube. Я сделал короткую демонстрацию для вас, ребята, чтобы посмотреть, что я пытаюсь сделать. Я настолько новичок в GUI, что мне никогда не учили делать графический интерфейс.

Вот ссылка: http://www.youtube.com/watch?v=up1LV5r-NSg

+3

+1 для видео и описания. отличная идея! желайте, чтобы больше людей делали что-то подобное. –

+0

Один из последних предложений: * «Мне просто нужно, чтобы ты сейчас» * заставил меня усмехнуться. :) –

+0

@Bart K: lolx этого не понял, просто подумал, что это хорошая песня!Хотя он был оснащен видео, не так ли? Я нуждаюсь в тебе сейчас, чтобы помочь! lolz – James1

ответ

5

Я вижу, что вы используете конструктор GUI. Я настоятельно рекомендую создать свой графический интерфейс «вручную», а в этом случае ваш код будет IMO гораздо яснее (я не говорю, что все дизайнеры GUI производят плохой код, но его почти всегда трудно читать, и его редактирование будет трудно без использования тот же дизайнер GUI). Как только вам будет удобно работать с графическим интерфейсом, попробуйте GUI-дизайнер и посмотрите, что делает вас более комфортным.

См: http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

В вашем случае, вы можете создать BorderLayout, и в «южной» вашей панели/кадр, который вы можете разместить панель с FlowLayout совместив его компоненты влево. Затем добавьте свою кнопку на панель с помощью FlowLayout.

Немного демо:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Date; 

public class LayoutDemo extends JFrame { 

    LayoutDemo() { 
     super("LayoutDemo"); 
     super.setSize(400, 200); 
     super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     createGUI(); 
     super.setVisible(true); 
    } 

    private void createGUI() { 
     // set the layout of this frame 
     super.setLayout(new BorderLayout()); 

     // create a panel to put the button on 
     final JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 

     // create a text area to put in the center 
     final JTextArea textArea = new JTextArea(); 

     // create the search button 
     final JButton searchButton = new JButton("search"); 

     // add a listener to the button that add some text to the text area 
     searchButton.addActionListener(new ActionListener(){ 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       textArea.setText(textArea.getText() + "pressed search on " + (new Date()) + "\n"); 
      } 
     }); 

     // add the button to the bottom panel 
     bottomPanel.add(searchButton); 

     // wrap a scroll-pane around the text area and place it on the center of this frame 
     super.add(new JScrollPane(textArea), BorderLayout.CENTER); 

     // put the bottom panel (containing the button) on the 'south' of this frame 
     super.add(bottomPanel, BorderLayout.SOUTH); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new LayoutDemo(); 
      } 
     }); 
    } 
} 

производит:

alt text http://img689.imageshack.us/img689/5874/guiq.png


EDIT

И переместить кнопку немного больше вверх, используйте конструктор new FlowLayout(FlowLayout.LEFT, int hgap, int vgap)

, где hgap - промежуток (в пикселях) между левым и правым компонентами и vgap - это промежуток (в пикселях) между верхним и нижним компонентами.

Try:

final JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 10)); 

Обратите внимание, что пространство между кнопкой и текстовой области также немного увеличивается!

+0

Приобретено для предложения BorderLayout. Это решение, которое я нашел методом проб и ошибок. http://stackoverflow.com/questions/2889300/swing-layout-using-a-grid-while-keeping-component-dimensions –

+0

Итак, что бы вы изменили, если бы вы захотели еще немного переместить кнопку вверх (просто немного Больше)? – James1

+0

@ james1, см. Мой EDIT. –

0

Если вы не пытаетесь узнать об ошибках в Java Swing и не пытаетесь создать какой-то причудливый графический интерфейс, тогда дизайнер GUI, такой как тот, который вы используете, должен быть в порядке.

То, что вы не можете сделать, похоже, является ограничением вашей конкретной IDE, хотя, возможно, было бы полезно попробовать Netbeans. Вы всегда можете взять сгенерированный GUI-код (уродливый, как это может быть), а затем подключить его обратно в свой проект в другой среде IDE.

+0

Да, я знал, что netbeans это делает, но я хочу изучить его в java, а также понять код, поэтому я использовал этот Jframe, чтобы увидеть, как он написан на самом деле. – James1

3

узнать fest swing test и miglayout! fest swing test позволяет запускать ваш gui screnario. и Miglayout, это мое мнение, также легко использовать макет lib.

Fest: http://fest.easytesting.org/swing/wiki/pmwiki.php 
MigLayout: http://www.miglayout.com/ 
+0

Это выглядит великолепно, постарается узнать это. Спасибо alot – James1

+0

Я использовал их мой выпускной проект. Основной проблемой разработки GUI является проблема макета. Но mig позволяет создавать хороший дизайн без визуального редактора. – ibrahimyilmaz

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