2014-04-05 3 views
0

Я пытаюсь сделать приложение в java, для начала у меня проблемы с графическим интерфейсом. Я поставил Jpanel внутри Jframe, но я получаю проблемы, когда я использую setMaximumSize, и более того, я хочу исправить размер Jpanel, так что даже если пользователь попытается изменить размер окна, jpanel останется в центре. я попытался это решение на StackOverflow
How can I properly center a JPanel (FIXED SIZE) inside a JFrame? Пожалуйста, наставит меня through.This мой первый пост, я не имею достаточно репутацию, чтобы разместить изображение .THANKSЯ пытаюсь построить макет в Swing Java

import javax.swing.*; 
import java.awt.*; 

class App_Demo4 extends JFrame { 

    public App_Demo4() 
    { 

     JFrame frm=new JFrame("Application"); 
     JPanel pane=new JPanel(); 
     frm.setVisible(true); 
     frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frm.setLayout(new BorderLayout()); 
     frm.add(pane,BorderLayout.CENTER); 
     pane.setSize(400,400); 
     Dimension dim=new Dimension(400,400); 
     pane.setMinimumSize(dim); 


     Box box = new Box(BoxLayout.Y_AXIS); 

     box.add(Box.createVerticalGlue()); 
     box.add(pane);  
     box.add(Box.createVerticalGlue()); 

     frm.add(box); 
     frm.setSize(500,500); 

     JButton dbtn1=new JButton("Download File"); 
     pane.add(dbtn1); 
     JTextField txt1=new JTextField(20); 
     pane.add(txt1); 
     JButton bbtn1=new JButton("Browse"); 
     pane.add(bbtn1); 

     JButton dbtn2=new JButton("Download Mail"); 
     pane.add(dbtn2); 
     JTextField txt2=new JTextField(20); 
     pane.add(txt2); 
     JButton bbtn2=new JButton("Browse"); 
     pane.add(bbtn2); 

     JButton cbtn1=new JButton("Compile File"); 
     pane.add(cbtn1); 
     JTextField txt3=new JTextField(20); 
     pane.add(txt3); 
     JButton bbtn3=new JButton("Browse"); 
     pane.add(bbtn3); 

     JButton cbtn2=new JButton("Cancel"); 
     pane.add(cbtn2,BorderLayout.EAST); 


    } 
    public static void main(String[] args) 
    { 
     new App_Demo4(); 
    } 
} 
+0

Вызова 'frm.setVisible (истина),' в конце концов. – Braj

+0

вызов Methos frm.pack(); – Benjamin

ответ

1

Не пытайтесь установить размер панели. Это задача менеджера компоновки.

Необходимо изменить диспетчер компоновки панели. По умолчанию JPanel использует FlowLayout. В этом случае компоненты просто перетекают в новую строку в зависимости от ширины рамки.

Возможно, вы захотите посмотреть GridBagLayout. Дополнительную информацию и примеры см. В разделе руководства Swing по адресу How to Use a GridBagLayout.

Кроме того, убедитесь, что вы добавили все компоненты в раму ПЕРЕД упаковкой рамы и созданием рамки. Таким образом, вы базовый код должен быть:

frame.add(....)l 
frame.pack(); 
frame.setVisible(true); 
+0

Человек создает рамку в классе, расширяющем рамку. это не так, и на этом не было высказано никаких замечаний. – JajaDrinker

+0

@JajaDrinker, я надеюсь, что вы проголосовали за себя и все остальные ответы на форуме, так как подавляющее большинство всего кода, размещенного на форуме, расширяет JFrame. – camickr

+0

Меня не волнует огромное большинство! Если они ошибаются, мы должны рассказать им все! когда вы расширяете JFrame, правильный способ сделать это: this.add (панель); this.pack(); this.setVisible (true); – JajaDrinker

-1

То, как вы это делаете:

Надеется, что это помогает ...

import javax.swing.*; 
import java.awt.*; 

public class App_Demo4 extends JFrame { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    public App_Demo4() 
    { 

     super("Application"); 
     JPanel pane=new JPanel(); 

     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setPreferredSize(new Dimension(500,500)); 

     GridBagLayout gl = new GridBagLayout(); 
     pane.setLayout(gl); 

     GridBagConstraints c = new GridBagConstraints(); 
     c.weightx = 1; 
     c.weighty = 1; 
     c.anchor = GridBagConstraints.CENTER; 
     c.fill = GridBagConstraints.NONE; 
     c.insets = new Insets(6, 6, 6, 6); 

     c.gridx = 0; 
     c.gridy = 0; 

     JButton dbtn1=new JButton("Download File"); 
     pane.add(dbtn1, c); 

     JTextField txt1=new JTextField(20); 
     c.gridx = 1; 
     pane.add(txt1, c); 

     JButton bbtn1=new JButton("Browse"); 
     c.gridx = 2; 
     pane.add(bbtn1, c); 

     JButton dbtn2=new JButton("Download Mail"); 
     c.gridy = 1; 
     c.gridx = 0; 
     pane.add(dbtn2, c); 

     JTextField txt2=new JTextField(20); 
     c.gridx = 1; 
     pane.add(txt2, c); 

     JButton bbtn2=new JButton("Browse"); 
     c.gridx = 2; 
     pane.add(bbtn2, c); 

     c.gridy = 2; 
     c.gridx = 0; 
     JButton cbtn1=new JButton("Compile File"); 
     pane.add(cbtn1, c); 

     JTextField txt3=new JTextField(20); 
     c.gridx = 1; 
     pane.add(txt3, c); 

     JButton bbtn3=new JButton("Browse"); 
     c.gridx = 2; 
     pane.add(bbtn3, c); 

     c.gridy = 3; 
     c.gridx = 2; 
     JButton cbtn2=new JButton("Cancel"); 
     pane.add(cbtn2,c); 

     this.add(pane); 
     this.pack(); 
     this.setVisible(true); 

    } 
    public static void main(String[] args) 
    { 

     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new App_Demo4(); 
      } 
     }); 

    } 
} 
+0

Ложка feedind? Lol ... это базовый пример того, что он будет менять/анализировать и продвигать барабан быстрее! И я знаю, потому что, когда я обращаюсь за помощью, я ищу пример кода. API трудно читать, когда вы начинаете! Я не дал ему решение, но пример. Вы даете ссылку с кодом, который я вводил здесь код ... – JajaDrinker

+0

Учебник Swing полон примеров. Не только для GridBagLayout, но и для других макетов, а также для других функций Swing. Проводка кода без объяснения проблемы с исходным кодом НЕ помогает OP понять, что происходит. – camickr

+0

«Я считаю, что вы получили свое голосование, потому что здесь, в Stack Overflow, ожидается, что ответ будет включать ответ, а не только ссылку на какой-либо сайт. Поскольку сайты часто меняются, эта ссылка может быть недоступна для fut поэтому ответ не подходит кому-то, скажем, через год, ища такую ​​же помощь. Если вы знаете код для использования, отправьте его здесь. В противном случае ответ не поможет.- Charlie74 1 час назад "@camickr http://stackoverflow.com/questions/22885702/html-for-the-pause-symbol-in-a-video-control/22885762?noredirect1_comment34922719_22885762 – JajaDrinker

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