Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > FlowLayout and JTextField


Автор: devmstr 27.12.2006, 20:20
Почему jTextField имеет нулевую длину!!!!
Код

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

public class SW extends JFrame{
    
    public void init()
    {
        JTextField jTF_Expr = new JTextField();
        
        FlowLayout con = new FlowLayout();
        setLayout(con);
        add(jTF_Expr);
        jTF_Expr.setSize(100, 100);
    }
 
    public SW() {
        super();
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(500, 500);
        init();
        show();
    }
    
    
    public static void main(String[] args) {
       
        new SW(); 
    }
    
}


Автор: WandM 27.12.2006, 21:13
Т.к. в нем ничего нет.

Автор: devmstr 27.12.2006, 21:34
WandM
А можно сделать, так что-бы он сразу был установленного размера?

Автор: BlackStar 27.12.2006, 21:37
установи размер методами setMinimumSize() setMaximumSize() setPreferredSize() или используй другой менеджер размещения

Автор: devmstr 27.12.2006, 22:31
BlackStar
Спасибо, ща попробую. 

Цитата(BlackStar @  27.12.2006,  21:37 Найти цитируемый пост)
используй другой менеджер размещения 

А можно вообще никакой не использовать, а самому все выставлять. В Sun Java Studio есть AbsoluteLayout, но как я понял там это отдельный пакет. А есть что-то наподобии, но встроенное непосредственно в JDK

Автор: LSD 27.12.2006, 22:36
Цитата(devmstr @  27.12.2006,  22:31 Найти цитируемый пост)
А можно вообще никакой не использовать, а самому все выставлять. В Sun Java Studio есть AbsoluteLayout, но как я понял там это отдельный пакет. А есть что-то наподобии, но встроенное непосредственно в JDK

setLayout(null)

Автор: powerOn 27.12.2006, 22:38
Цитата(devmstr @  27.12.2006,  22:31 Найти цитируемый пост)
А можно вообще никакой не использовать, а самому все выставлять. В Sun Java Studio есть AbsoluteLayout, но как я понял там это отдельный пакет. А есть что-то наподобии, но встроенное непосредственно в JDK 

Смотря какая JDK. Вообще, выбор лайаута зависит от того, что в итоге нужно получить: Будет ли компонент сохранять свои размеры при изменении размеров контейнера или нет, взаиморасположение компонента относительно других компонентов и т.д.  Что получить-то хочется?

Автор: devmstr 28.12.2006, 05:11
LSD
Спасибо большое... Наверное оно.



Цитата(powerOn @  27.12.2006,  22:38 Найти цитируемый пост)
Что получить-то хочется? 

Ну как говорится, что привычно, то удобно. До этого мне Layout не в каком языке не встречался и пока-что мне работать с ним дико. Просто мне нужно очень быстро написать программу с интерфейсом и возникли с  этим проблемы. Особенно с LayoutManageram'i.
Например хотел получить такой вид формы:

-------------------------------------------------------
|                                                                    
| jLabel
|    ------------------------------  ---------------
|    |     jTextField                | |    jButton |                
|     ------------------------------  --------------
|__________________________________
 -------------------------------------------------------
|  ° jRadioButton            ° j RadioButton
|__________________________________
Как это сделать с помощью какого-либо LayoutManagera не знаю....

Автор: devmstr 28.12.2006, 08:15
Цитата(powerOn @  27.12.2006,  22:38 Найти цитируемый пост)
Смотря какая JDK.


А в каких JDK 
Цитата(LSD @  27.12.2006,  22:36 Найти цитируемый пост)
setLayout(null) 
 не будет работать?

Автор: powerOn 28.12.2006, 12:05
Цитата(devmstr @  28.12.2006,  08:15 Найти цитируемый пост)
А в каких JDK 
Цитата(LSD @  27.12.2006,  22:36 Найти цитируемый пост)
setLayout(null) 
не будет работать?


Этот должен работать везде. 


Цитата(devmstr @  28.12.2006,  05:11 Найти цитируемый пост)
Как это сделать с помощью какого-либо LayoutManagera не знаю....


Можно так попробовать:
Код

public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
        initComponents();
    }
    
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        jPanel1 = new javax.swing.JPanel();
        jRadioButton1 = new javax.swing.JRadioButton();
        jRadioButton2 = new javax.swing.JRadioButton();
        jRadioButton3 = new javax.swing.JRadioButton();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jRadioButton1.setText("jRadioButton1");
        jRadioButton1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jRadioButton1.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jPanel1.add(jRadioButton1);

        jRadioButton2.setText("jRadioButton2");
        jRadioButton2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jRadioButton2.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jPanel1.add(jRadioButton2);

        jRadioButton3.setText("jRadioButton3");
        jRadioButton3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        jRadioButton3.setMargin(new java.awt.Insets(0, 0, 0, 0));
        jPanel1.add(jRadioButton3);

        getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_END);

        jPanel2.setLayout(new java.awt.GridBagLayout());

        jLabel1.setText("jLabel1");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 6;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 15;
        gridBagConstraints.insets = new java.awt.Insets(5, 0, 5, 0);
        jPanel2.add(jLabel1, gridBagConstraints);

        jTextField1.setText("jTextField1");
        jTextField1.setMinimumSize(new java.awt.Dimension(250, 20));
        jTextField1.setPreferredSize(new java.awt.Dimension(250, 20));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.gridwidth = 5;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 1;
        gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);
        jPanel2.add(jTextField1, gridBagConstraints);

        jButton1.setText("jButton1");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 5;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);
        jPanel2.add(jButton1, gridBagConstraints);

        getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER);

        pack();
    }                     
    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
                   
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JRadioButton jRadioButton1;
    private javax.swing.JRadioButton jRadioButton2;
    private javax.swing.JRadioButton jRadioButton3;
    private javax.swing.JTextField jTextField1;
                 
}

Автор: devmstr 28.12.2006, 12:28
powerOn
Большое спасибо, попробую...

Автор: xandr 16.1.2007, 02:13
Цитата(devmstr @ 27.12.2006,  21:34)
WandM
А можно сделать, так что-бы он сразу был установленного размера?

Попробуй конструктор JTextField(int Columns), например,

Код

        firstRootField = new JTextField(15);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)