Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по Layout-у, Корректировка имеющегося кода 
:(
    Опции темы
NetJunky
Дата 19.11.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: нет
Всего: 0



Вообщем щас имею программу такого рода.
Тоесть даже не программу грубо говоря код формы.

В центре будет в дальнейшем выводится график.

Изначально форму сделал в NetBeans, но мне сказали, что надо использовать консоль при защите программы.
Вот решил из кода полученного там сделать своё подобие.

Вот что сам сделал с помощью представленного кода: Сейчас есть.jpg
А вот что требуется изготовить: Требуется.jpg

По картинкам можно заметить различие.
Могу сказать, что NetBeans делал форму с помощью GroupLayout

Код
import javax.swing.*;        
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class stocs {

    public static void main(String[] args) {
        
        JFrame frame = new Graphs();
        
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            SwingUtilities.updateComponentTreeUI(frame);
            frame.pack();
        } catch (Exception exc) {
            System.err.println("Could not load given LookAndFeel!");
        }
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800,350);
        frame.setLocation(200,200);
        frame.setTitle("Stocs");
        
        frame.setVisible(true);
    }
}

class Graphs extends JFrame {

    // Variables declaration - do not modify                     
    Graphs frame;
    DrawPanel drawpanel;
    JButton jButton1;
    JCheckBox jCheckBox1;
    JCheckBox jCheckBox2;
    JCheckBox jCheckBox3;
    JLabel jLabel1;
    JLabel jLabel10;
    JLabel jLabel11;
    JLabel jLabel12;
    JLabel jLabel13;
    JLabel jLabel14;
    JLabel jLabel15;
    JLabel jLabel16;
    JLabel jLabel17;
    JLabel jLabel2;
    JLabel jLabel3;
    JLabel jLabel4;
    JLabel jLabel5;
    JLabel jLabel6;
    JLabel jLabel7;
    JLabel jLabel8;
    JLabel jLabel9;
    JPanel jPanel1;
    JPanel jPanel2;
    JPanel jPanel3;
    JPanel jPanel4;
    JTextField jTextField1;
    JTextField jTextField2;
    JTextField jTextField3;
    JTextField jTextField4;
    JTextField jTextField5;
    JTextField jTextField6;
    JTextField jTextField7;
    JTextField jTextField8;
    JTextField jTextField9;
    // End of variables declaration
    
    Graphs() {
        
        drawpanel = new DrawPanel();
        jPanel1 = new JPanel();
        jPanel2 = new JPanel();
        jPanel3 = new JPanel();
        jPanel4 = new JPanel();
        jCheckBox1 = new JCheckBox();
        jCheckBox2 = new JCheckBox();
        jCheckBox3 = new JCheckBox();
        jButton1 = new JButton();
        jTextField1 = new JTextField();
        jTextField2 = new JTextField();
        jTextField3 = new JTextField();
        jTextField4 = new JTextField();
        jTextField5 = new JTextField();
        jTextField6 = new JTextField();
        jTextField7 = new JTextField();
        jTextField8 = new JTextField();
        jTextField9 = new JTextField();
        jLabel1 = new JLabel();
        jLabel2 = new JLabel();
        jLabel3 = new JLabel();
        jLabel4 = new JLabel();
        jLabel5 = new JLabel();
        jLabel6 = new JLabel();
        jLabel7 = new JLabel();
        jLabel8 = new JLabel();
        jLabel9 = new JLabel();
        jLabel10 = new JLabel();
        jLabel11 = new JLabel();
        jLabel12 = new JLabel();
        jLabel13 = new JLabel();
        jLabel14 = new JLabel();
        jLabel15 = new JLabel();
        jLabel16 = new JLabel();
        jLabel17 = new JLabel();
        
        jPanel1.setLayout(new FlowLayout());
        jPanel1.setBackground(new Color(102, 102, 102));
        
        jPanel4.setLayout(new BorderLayout());
        jPanel4.setBackground(new Color(240, 240, 240));
        
        jLabel1.setForeground(new Color(0, 255, 255));
        jLabel1.setText("Chart name");
        
        jPanel1.add(jLabel1);
        
        jTextField1.setHorizontalAlignment(JTextField.LEFT);
        jTextField1.setPreferredSize(new Dimension(17, 20));
        jPanel1.add(jTextField1);
        
        jCheckBox1.setBackground(new Color(102, 102, 102));
        jCheckBox1.setForeground(new Color(0, 255, 255));
        jCheckBox1.setText("Day");
        jPanel1.add(jCheckBox1);
        
        jCheckBox2.setBackground(new Color(102, 102, 102));
        jCheckBox2.setForeground(new Color(0, 255, 255));
        jCheckBox2.setText("Week");
        jPanel1.add(jCheckBox2);
        
        jCheckBox3.setBackground(new Color(102, 102, 102));
        jCheckBox3.setForeground(new Color(0, 255, 255));
        jCheckBox3.setText("Month");
        jPanel1.add(jCheckBox3);
        
        jLabel16.setForeground(new Color(0, 255, 255));
        jLabel16.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel16.setText("Moving average 1");
        jPanel1.add(jLabel16);
        
        jTextField8.setPreferredSize(new Dimension(16, 16));
        jPanel1.add(jTextField8);
        
        jLabel17.setForeground(new Color(0, 255, 255));
        jLabel17.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel17.setText("Moving average 2");
        jPanel1.add(jLabel17);
        
        jTextField9.setPreferredSize(new Dimension(16, 16));
        jPanel1.add(jTextField9);
        
        jButton1.setText("Draw Grapgh");
        jPanel1.add(jButton1);
        jButton1.addActionListener(drawpanel);
        
        jPanel4.add(BorderLayout.PAGE_START, jPanel1);
        
        
        jPanel2.setLayout(new GridLayout(10,3));
        jPanel2.setBackground(new Color(102, 102, 102));
        
        jLabel5.setForeground(new Color(51, 204, 255));
        jLabel5.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel5.setText("Begining");
        jPanel2.add(jLabel5);
        
        jLabel2.setForeground(new Color(255, 153, 0));
        jLabel2.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel2.setText("Day");
        jPanel2.add(jLabel2);
        
        jLabel12.setForeground(new Color(102, 255, 153));
        jLabel12.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel12.setText("(01-31)");
        jPanel2.add(jLabel12);
        
        jTextField2.setHorizontalAlignment(JTextField.CENTER);
        jPanel2.add(jTextField2);
        
        jLabel3.setForeground(new Color(255, 153, 0));
        jLabel3.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel3.setText("Month");
        jPanel2.add(jLabel3);
        
        jLabel11.setForeground(new Color(102, 255, 153));
        jLabel11.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel11.setText("(00-11)");
        jPanel2.add(jLabel11);
        
        jTextField3.setHorizontalAlignment(JTextField.CENTER);
        jPanel2.add(jTextField3);
        
        jLabel4.setForeground(new Color(255, 153, 0));
        jLabel4.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel4.setText("Year");
        jPanel2.add(jLabel4);
        
        jLabel10.setForeground(new Color(153, 255, 153));
        jLabel10.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel10.setText("(yyyy)");
        jPanel2.add(jLabel10);
        
        jTextField4.setHorizontalAlignment(JTextField.CENTER);
        jPanel2.add(jTextField4);
        
        jPanel4.add(BorderLayout.LINE_START, jPanel2);
        
        
        jPanel3.setLayout(new GridLayout(10,3));
        jPanel3.setBackground(new Color(102, 102, 102));
        
        jLabel6.setForeground(new Color(51, 204, 255));
        jLabel6.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel6.setText("Ending");
        jPanel3.add(jLabel6);
        
        jLabel7.setForeground(new Color(255, 153, 0));
        jLabel7.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel7.setText("Day");
        jPanel3.add(jLabel7);
        
        jLabel15.setForeground(new Color(102, 255, 153));
        jLabel15.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel15.setText("(01-31)");
        jPanel3.add(jLabel15);
        
        jTextField5.setHorizontalAlignment(JTextField.CENTER);
        jPanel3.add(jTextField5);
        
        jLabel8.setForeground(new Color(255, 153, 0));
        jLabel8.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel8.setText("Month");
        jPanel3.add(jLabel8);
        
        jLabel14.setForeground(new Color(102, 255, 153));
        jLabel14.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel14.setText("(00-11)");
        jPanel3.add(jLabel14);
        
        jTextField6.setHorizontalAlignment(JTextField.CENTER);
        jPanel3.add(jTextField6);
        
        jLabel9.setForeground(new Color(255, 153, 0));
        jLabel9.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel9.setText("Year");
        jPanel3.add(jLabel9);
        
        jLabel13.setForeground(new Color(153, 255, 153));
        jLabel13.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel13.setText("(yyyy)");
        jPanel3.add(jLabel13);
        
        jTextField7.setHorizontalAlignment(JTextField.CENTER);
        jPanel3.add(jTextField7);
        
        jPanel4.add(BorderLayout.LINE_END, jPanel3);
        
        
        jPanel4.add(BorderLayout.CENTER, drawpanel);

        this.getContentPane().add(jPanel4);
    }
    
    class DrawPanel extends JPanel implements ActionListener {
        
        DrawPanel() {
            initReading();
        }
        
        public void actionPerformed(ActionEvent e) {
            System.out.println();
            jPanel4.repaint();
        }
        
        void initReading() {
            
        }
    }
}




Это сообщение отредактировал(а) NetJunky - 20.11.2008, 18:21


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
Connie
Дата 19.11.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



Цитата
Могу сказать, что NetBeans делал форму с помощью GroupLayout

Код

GroupLayout layout = new GroupLayout(this.getContentPane());
        getContentPane().setLayout(layout);
        
        
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);

Код

layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(lblName,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                    .addComponent(fldName,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE))...

И в таком духе

А вообще разложить на части., т.е. сначала сделать три панельки с нужными Layout'ми, потом все это дело положить на главную форму, там напрашивается BorderLayout

Это сообщение отредактировал(а) Connie - 19.11.2008, 14:35
PM MAIL WWW   Вверх
NetJunky
Дата 19.11.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: нет
Всего: 0



Connie, я на Ява сайте смотрел эти примеры. Толком их не догнал и так и сяк пробовал. Но что-то всё не удачно выходило. То одно расползётся, то другое.


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
Vurn
Дата 19.11.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 24.5.2007

Репутация: нет
Всего: 3



На русском с картинками:

http://skipy.ru/technics/layouts.html


PM MAIL   Вверх
NetJunky
Дата 19.11.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: нет
Всего: 0



и так и сяк опробовал, но не выходит.
Мог бы кто-нибудь на кусочке моего кода показать как хотябы у одной бовой панели сделать отсут по крям, чтобы текстовые не стояли в притык. Вообщем как на второй картинке, где я написал, что требуется.
Про GroupLayout читал и так же не понятно осталось, а особенно не понятки какие-то с использованием Gap.


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
dorogoyIV
Дата 20.11.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Код

...
   jTextField2 = new JTextField(6);
   jPanel2.setLayout(new VerticalLayout(1));
...

class VerticalLayout implements LayoutManager
{
 static final int LEFT = 0;
 static final int CENTER = 1;
 static final int RIGHT = 2;
 int alignment = 0;

 VerticalLayout()
 {
  this(1);
 }

 VerticalLayout(int alignment)
 {
  this.alignment = alignment;
 }

 public void layoutContainer(Container parent)
 {
  Component [] components = parent.getComponents();
  int w = 0, h = 0;

  for(int i = 0; i < components.length; i++)
  {
   int width = components [i].getPreferredSize().width;
   int height = components [i].getPreferredSize().height;

   if(alignment == 0)
    components [i].setBounds(w, h, width, height);
   if(alignment == 1)
    components [i].setBounds((parent.getWidth() - width)/2, h, width, height);
   if(alignment == 2)
    components [i].setBounds(parent.getWidth() - width, h, width, height);

   h+= height;
  }
 }

 public Dimension preferredLayoutSize(Container parent)
 {
  int width = 0, height = 0;

  Component [] components = parent.getComponents();

  for(int i = 0; i < components.length; i++)
  {
   if(width < components [i].getPreferredSize().width)
    width = components [i].getPreferredSize().width + 8;

   height+= components [i].getHeight();
  }

  return new Dimension(width, height);
 }
 public void addLayoutComponent(String name, Component comp){}
 public void removeLayoutComponent(Component comp){}
 public Dimension minimumLayoutSize(Container parent)
 {
  return new Dimension(0, 0);
 }
}

PM MAIL   Вверх
Connie
Дата 20.11.2008, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



Код

public MainFrame(){
        super("Table test");
        setLayout(new BorderLayout());
        
        add(createSidePane("Beginning"),BorderLayout.WEST);
        add(createSidePane("Ending"),BorderLayout.EAST);
        JToolBar bar = new JToolBar();
        bar.add(new JButton("One"));
        bar.add(new JButton("Two"));
        bar.add(new JButton("Three"));
        add(bar,BorderLayout.NORTH);

        String[][] names = {{"Mr. ", "Mrs. ", "Ms. "},
                            {"Smith", "Jones","Foo"}};
        String [] colms = {"1","2","3"};
        JTable tableSource = new JTable(names,colms);
add(new JScrollPane(tableSource));
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setBounds(100, 100, 550, 350);
       
    }

private JPanel createSidePane(String title){
        JPanel resPane = new JPanel();
        GroupLayout layout = new GroupLayout(resPane);
        resPane.setLayout(layout);
        
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);
        
        JLabel lblTitle = new JLabel(title);
        
        JLabel lblDay = new JLabel("Day");
        JLabel lblDayRange = new JLabel("(1-31)");
        JTextField fldDay = new JTextField(5);
        
        JLabel lblMonth = new JLabel("Month");
        JLabel lblMonthRange = new JLabel("(1-12)");
        JTextField fldMonth = new JTextField(5);
        
        JLabel lblYear = new JLabel("Year");
        JLabel lblYearRange = new JLabel(":-P");
        JTextField fldYear = new JTextField(5);

        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,
                true)
                .addComponent(lblTitle)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,
                true)
                    .addComponent(lblDay)
                    .addComponent(lblDayRange)
                    .addComponent(fldDay))
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,
                true)
                    .addComponent(lblMonth)
                    .addComponent(lblMonthRange)
                    .addComponent(fldMonth))
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,
                true)
                    .addComponent(lblYear)
                    .addComponent(lblYearRange)
                    .addComponent(fldYear))
                );
       layout.setVerticalGroup(layout.createSequentialGroup()
               .addComponent(lblTitle,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                .addGap(20)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(lblDay,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblDayRange,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                    .addComponent(fldDay,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE))
                .addGap(10)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(lblMonth,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblMonthRange,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                    .addComponent(fldMonth,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE))
            .addGap(10)    
            .addGroup(layout.createSequentialGroup()
                    .addComponent(lblYear,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblYearRange,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE)
                    .addComponent(fldYear,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
          GroupLayout.PREFERRED_SIZE))
               ); 
        
        return resPane;
    }


user posted image

немного изменил, добавил gaps так красивее и правильней smile на рисунке без них

Это сообщение отредактировал(а) Connie - 20.11.2008, 11:29
PM MAIL WWW   Вверх
NetJunky
Дата 20.11.2008, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: нет
Всего: 0



Connie, исвеняюсь. Видимо я что-то не понял.
Я откомпилировал Вашу часть без изменений и компилятор выдал ошибки, видимо из-за того, что небыло ни одного класса public class
Вообщем в строке MainFrame() добавил class он ещё больше ошибок выдал.
Тоесть я так понимаю, что мне надо вызвать функцию MainFrame() из public static void main(String[] args)
Или снова какие-то не понятки?


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
Connie
Дата 20.11.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



Конечно, я же кусок программы дал. Выше дан конструктор класса MainFrame унаследованный от JFrame и вспомогательная функция createSidePane, что бы два раза одно и тоже не писать.

вот главный класс, из которого создается главная форма
Код

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
   //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI(); 
            }
        });
   }
 private static void createAndShowGUI() {
     MainFrame sf = new MainFrame();
     sf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     sf.setVisible(true); 
 }
 
}



Ошибки так могут быть из за отсутствия фигурных скобок



PM MAIL WWW   Вверх
NetJunky
Дата 21.11.2008, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: нет
Всего: 0



Connie, вроде ну всё сделал как Вы сказали и всё равно ошибок 34 выдаёт.

Вот совместил две части те. Проверил скобки вроде все есть.
Код
import javax.swing.*;        
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI(); 
            }
        });
   }
    private static void createAndShowGUI() {
        MainFrame sf = new MainFrame();
        sf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        sf.setVisible(true);
    }
}

public MainFrame() {
    super("Table test");
    setLayout(new BorderLayout());
    add(createSidePane("Beginning"),BorderLayout.WEST);
    add(createSidePane("Ending"),BorderLayout.EAST);
    JToolBar bar = new JToolBar();
    bar.add(new JButton("One"));
    bar.add(new JButton("Two"));
    bar.add(new JButton("Three"));
    add(bar,BorderLayout.NORTH);
    String[][] names = {{"Mr. ", "Mrs. ", "Ms. "},{"Smith", "Jones", "Foo"}};
    String [] colms = {"1","2","3"};
    JTable tableSource = new JTable(names,colms);
    add(new JScrollPane(tableSource));
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 550, 350);
}

private JPanel createSidePane(String title) {
    JPanel resPane = new JPanel();
    GroupLayout layout = new GroupLayout(resPane);
    resPane.setLayout(layout);
    layout.setAutoCreateGaps(true);
    layout.setAutoCreateContainerGaps(true);
    
    JLabel lblTitle = new JLabel(title);
    
    JLabel lblDay = new JLabel("Day");
    JLabel lblDayRange = new JLabel("(1-31)");
    JTextField fldDay = new JTextField(5);
    
    JLabel lblMonth = new JLabel("Month");
    JLabel lblMonthRange = new JLabel("(1-12)");
    JTextField fldMonth = new JTextField(5);
    
    JLabel lblYear = new JLabel("Year");
    JLabel lblYearRange = new JLabel(":-P");
    JTextField fldYear = new JTextField(5);
    
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,true)
            .addComponent(lblTitle)
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,true)
                .addComponent(lblDay)
                .addComponent(lblDayRange)
                .addComponent(fldDay)
            )
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,true)
                .addComponent(lblMonth)
                .addComponent(lblMonthRange)
                .addComponent(fldMonth)
            )
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,true)
                .addComponent(lblYear)
                .addComponent(lblYearRange)
                .addComponent(fldYear)
            )
        );
        layout.setVerticalGroup(layout.createSequentialGroup()
            .addComponent(lblTitle,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                .addGap(20)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(lblDay,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblDayRange,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    .addComponent(fldDay,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                )
                .addGap(10)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(lblMonth,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblMonthRange,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    .addComponent(fldMonth,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                )
                .addGap(10)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(lblYear,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblYearRange,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    .addComponent(fldYear,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                )
        );

    return resPane;
}


Вот ошибки, не совсем понимаю в чём проблема.
Код
Main.java:28: class, interface, or enum expected
public MainFrame() {
       ^
Main.java:30: class, interface, or enum expected
        setLayout(new BorderLayout());
        ^
Main.java:31: class, interface, or enum expected
        add(createSidePane("Beginning"),BorderLayout.WEST);
        ^
Main.java:32: class, interface, or enum expected
        add(createSidePane("Ending"),BorderLayout.EAST);
        ^
Main.java:33: class, interface, or enum expected
        JToolBar bar = new JToolBar();
        ^
Main.java:34: class, interface, or enum expected
        bar.add(new JButton("One"));
        ^
Main.java:35: class, interface, or enum expected
        bar.add(new JButton("Two"));
        ^
Main.java:36: class, interface, or enum expected
        bar.add(new JButton("Three"));
        ^
Main.java:37: class, interface, or enum expected
        add(bar,BorderLayout.NORTH);
        ^
Main.java:38: class, interface, or enum expected
        String[][] names = {{"Mr. ", "Mrs. ", "Ms. "},{"Smith", "Jones", "Foo"}};
        ^
Main.java:39: class, interface, or enum expected
        String [] colms = {"1","2","3"};
        ^
Main.java:40: class, interface, or enum expected
        JTable tableSource = new JTable(names,colms);
        ^
Main.java:41: class, interface, or enum expected
        add(new JScrollPane(tableSource));
        ^
Main.java:42: class, interface, or enum expected
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ^
Main.java:43: class, interface, or enum expected
        setBounds(100, 100, 550, 350);
        ^
Main.java:44: class, interface, or enum expected
}
^
Main.java:48: class, interface, or enum expected
        GroupLayout layout = new GroupLayout(resPane);
        ^
Main.java:49: class, interface, or enum expected
        resPane.setLayout(layout);
        ^
Main.java:50: class, interface, or enum expected
        layout.setAutoCreateGaps(true);
        ^
Main.java:51: class, interface, or enum expected
        layout.setAutoCreateContainerGaps(true);
        ^
Main.java:53: class, interface, or enum expected
        JLabel lblTitle = new JLabel(title);
        ^
Main.java:55: class, interface, or enum expected
        JLabel lblDay = new JLabel("Day");
        ^
Main.java:56: class, interface, or enum expected
        JLabel lblDayRange = new JLabel("(1-31)");
        ^
Main.java:57: class, interface, or enum expected
        JTextField fldDay = new JTextField(5);
        ^
Main.java:59: class, interface, or enum expected
        JLabel lblMonth = new JLabel("Month");
        ^
Main.java:60: class, interface, or enum expected
        JLabel lblMonthRange = new JLabel("(1-12)");
        ^
Main.java:61: class, interface, or enum expected
        JTextField fldMonth = new JTextField(5);
        ^
Main.java:63: class, interface, or enum expected
        JLabel lblYear = new JLabel("Year");
        ^
Main.java:64: class, interface, or enum expected
        JLabel lblYearRange = new JLabel(":-P");
        ^
Main.java:65: class, interface, or enum expected
        JTextField fldYear = new JTextField(5);
        ^
Main.java:67: class, interface, or enum expected
                layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.CENT
ER,true)
                ^
Main.java:85: class, interface, or enum expected
                layout.setVerticalGroup(layout.createSequentialGroup()
                ^
Main.java:106: class, interface, or enum expected
        return resPane;
        ^
Main.java:107: class, interface, or enum expected
}→
^
34 errors



--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
Connie
Дата 21.11.2008, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



Было бы неплохо изучить вот это
http://java.sun.com/docs/books/tutorial/java/index.html

Код нужно написать так
Код

public class Main {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    ....
}

public class MainFrame extends JFrame{
//если использовать класс public то он должен быть в отдельном файле
//если private то можно просто дописать его в тот же файл где главный класс Main
//но это будет совсем только для сдачи примера.


        public MainFrame() {
              super("Table test");
        ...
        }

        private JPanel createSidePane(String title) {
               JPanel resPane = new JPanel();
               ...
        }
}

Как Вы полагаете, будет конструктор работать без класса?

Учите мат часть.

Да вроде компилятор ясно сказал
Цитата
Main.java:28: class, interface, or enum expected
public MainFrame() {
Ожидается класс, интерфейс или enum и даже стрелка внизу
Если совсем плохо с англ, то плохо

Вот костыль
http://translation.paralink.com/default.asp


Это сообщение отредактировал(а) Connie - 21.11.2008, 08:40
PM MAIL WWW   Вверх
NetJunky
Дата 21.11.2008, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: нет
Всего: 0



Connie, нет с инглишом хорошо. Должен сознаться, что небыло времени, почитать.
А Java полюбому так учить и прийдёться, так как без этого никуда.

А об этом я думал extends JFrame, просто не был уверен.
Спасибо буду пробовать.

Обновил:
Connie, всё спасибо буду дальше сам эксперементировать.
Теперь всё хорошо.
Но вот этими Gap так и не умею пользоваться.
На Sun-e достаточно внятно объяснено это, неподскажете?

Цитата
Вот костыль
http://translation.paralink.com/default.asp


Предпочитаю это. smile 
http://translate.google.com/translate_t#en|ru|

Это сообщение отредактировал(а) NetJunky - 21.11.2008, 09:47


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
Connie
Дата 21.11.2008, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



Я java начал заниматься в сентябре этого года, до этого вообще не имел понятия о нем, правда писал на C++

Этот хитрый GroupLayout устроен так, сначала описываем горизонталь или вертикаль, потом другую ось, а гапы вставляются только там, где они нужны.

Зачем бы я стал вставлять гап, шириной 0? Хотя вставить их можно, так же и с описанием необходимости центрирования и изменения размера
По горизонтали меня интересует только центрирование и заполнение по ширине, поэтому это устанавливается для группы
Код

.addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,true)

А вот в вертикальной раскладке устанавливается уже подробнее
Код

.addComponent(lblTitle,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                .addGap(20)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(lblDay,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblDayRange,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    .addComponent(fldDay,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                )
                .addGap(10)

Тут и гапы нужны и описание указание того, что расширять компоненты не нужно, но впрочем Вы правы, все это на sun описано довольно подробно с примерами.

Я начинал этот layout использовать сначала рисую чего то маленькое и простое, например панельку с двумя компонентами, потом расширял.
Цитата

Предпочитаю это. smile 
http://translate.google.com/translate_t#en|ru|
I prefer reading without translation.

http://java.sun.com/docs/books/tutorial/reallybigindex.html

Это сообщение отредактировал(а) Connie - 21.11.2008, 09:59
PM MAIL WWW   Вверх
NetJunky
Дата 21.11.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: нет
Всего: 0



Щас всё ок и верхнюю панельку сделал, но возник вопрос, как мне по центру поставить DrawPanel?

Вот код на данный момент.
Код
import javax.swing.*;        
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

public class Main {

    public static void main(String[] args) {
        
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (Exception exc) {
            System.err.println("Could not load given LookAndFeel!");
        }

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI(); 
            }
        });
   }
    private static void createAndShowGUI() {
        MainFrame sf = new MainFrame();
        sf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        sf.setSize(950,400);
        sf.setLocation(200,200);
        sf.setTitle("Stocs");
        
        sf.setVisible(true);
    }
}

class MainFrame extends JFrame {

    public MainFrame() {
        setLayout(new BorderLayout());
        add(createSidePane("Beginning"),BorderLayout.WEST);
        add(createSidePane("Ending"),BorderLayout.EAST);
        add(createTopPane("Chart name"),BorderLayout.NORTH);
    }
    
    private JPanel createTopPane(String title) {
        JPanel topPane = new JPanel();
        topPane.setLayout(new FlowLayout());
        topPane.setBackground(new Color(102, 102, 102));
        
        JLabel jLabel1 = new JLabel();
        jLabel1.setHorizontalAlignment(SwingConstants.LEFT);
        jLabel1.setForeground(new Color(0, 255, 255));
        jLabel1.setText("Chart name");
        topPane.add(jLabel1);
        
        JTextField jTextField1 = new JTextField(6);
        jTextField1.setHorizontalAlignment(JTextField.LEFT);
        jTextField1.setPreferredSize(new Dimension(17, 20));
        topPane.add(jTextField1);
        
        JCheckBox jCheckBox1 = new JCheckBox();
        jCheckBox1.setBackground(new Color(102, 102, 102));
        jCheckBox1.setForeground(new Color(0, 255, 255));
        jCheckBox1.setText("Day");
        topPane.add(jCheckBox1);
        
        JCheckBox jCheckBox2 = new JCheckBox();
        jCheckBox2.setBackground(new Color(102, 102, 102));
        jCheckBox2.setForeground(new Color(0, 255, 255));
        jCheckBox2.setText("Week");
        topPane.add(jCheckBox2);
        
        JCheckBox jCheckBox3 = new JCheckBox();
        jCheckBox3.setBackground(new Color(102, 102, 102));
        jCheckBox3.setForeground(new Color(0, 255, 255));
        jCheckBox3.setText("Month");
        topPane.add(jCheckBox3);
        
        JLabel jLabel16 = new JLabel();
        jLabel16.setForeground(new Color(0, 255, 255));
        jLabel16.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel16.setText("Moving average 1");
        topPane.add(jLabel16);
        
        JTextField jTextField8 = new JTextField(3);
        jTextField8.setPreferredSize(new Dimension(16, 20));
        topPane.add(jTextField8);
        
        JLabel jLabel17 = new JLabel();
        jLabel17.setForeground(new Color(0, 255, 255));
        jLabel17.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel17.setText("Moving average 2");
        topPane.add(jLabel17);
        
        JTextField jTextField9 = new JTextField(3);
        jTextField9.setPreferredSize(new Dimension(16, 20));
        topPane.add(jTextField9);
        
        JButton jButton1 = new JButton();
        jButton1.setText("Draw Grapgh");
        topPane.add(jButton1);

        return topPane;
    }

    private JPanel createSidePane(String title) {
        JPanel resPane = new JPanel();
        resPane.setBackground(new Color(102, 102, 102));
        GroupLayout layout = new GroupLayout(resPane);
        resPane.setLayout(layout);
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);
        
        JLabel lblTitle = new JLabel(title);
        lblTitle.setForeground(new Color(51, 204, 255));
        
        JLabel lblDay = new JLabel("Day");
        lblDay.setForeground(new Color(255, 153, 0));
        JLabel lblDayRange = new JLabel("(01-31)");
        lblDayRange.setForeground(new Color(102, 255, 153));
        JTextField fldDay = new JTextField(5);
        fldDay.setHorizontalAlignment(JTextField.CENTER);
        
        JLabel lblMonth = new JLabel("Month");
        lblMonth.setForeground(new Color(255, 153, 0));
        JLabel lblMonthRange = new JLabel("(00-11)");
        lblMonthRange.setForeground(new Color(102, 255, 153));
        JTextField fldMonth = new JTextField(5);
        fldMonth.setHorizontalAlignment(JTextField.CENTER);
        
        JLabel lblYear = new JLabel("Year");
        lblYear.setForeground(new Color(255, 153, 0));
        JLabel lblYearRange = new JLabel("(yyyy)");
        lblYearRange.setForeground(new Color(102, 255, 153));
        JTextField fldYear = new JTextField(5);
        fldYear.setHorizontalAlignment(JTextField.CENTER);
        
            layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,true)
                .addComponent(lblTitle)
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,true)
                    .addComponent(lblDay)
                    .addComponent(lblDayRange)
                    .addComponent(fldDay)
                )
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,true)
                    .addComponent(lblMonth)
                    .addComponent(lblMonthRange)
                    .addComponent(fldMonth)
                )
                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER,true)
                    .addComponent(lblYear)
                    .addComponent(lblYearRange)
                    .addComponent(fldYear)
                )
            );
            layout.setVerticalGroup(layout.createSequentialGroup()
                .addComponent(lblTitle,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    .addGap(20)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(lblDay,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                        .addComponent(lblDayRange,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                        .addComponent(fldDay,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    )
                    .addGap(10)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(lblMonth,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                        .addComponent(lblMonthRange,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                        .addComponent(fldMonth,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    )
                    .addGap(10)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(lblYear,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                        .addComponent(lblYearRange,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                        .addComponent(fldYear,GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,GroupLayout.PREFERRED_SIZE)
                    )
            );
        return resPane;
    }
}



--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
Connie
Дата 21.11.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 8
Всего: 9



add(new JPanel(),BorderLayout.CENTER);

 smile 

Т.е. добавлять не компонент, а панель, в которую добавлять компонент, а в панели можно какой угодно сгородить layout

А можно просто установить у добавляемого компонента предпочитаемый, максимальный, минимальный размеры.

someComp.setMaximumSize(new Dimension(xM,yM));
someComp.setMinimumSize(new Dimension(xMin,yMin));
someComp.setPrefferedSize(new Dimension(x,y));

add(someComp,BorderLayout.CENTER));

Это сообщение отредактировал(а) Connie - 21.11.2008, 15:58
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.1137 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.