Я получил эти строки кода онлайн, которые заставили мою программу работать должным образом, но я не уверен, что они делают, кто-то может мне их объяснить? - PullRequest
0 голосов
/ 31 марта 2020

Итак, я нашел строки "Grid Frame = new Grid ();" и "Frame.homeFrame ();" онлайн, чтобы заставить мою программу работать. Теперь мой единственный вопрос - что на самом деле делают эти строки кода. Я никогда не видел названия класса, используемого таким образом.

package Nudes;

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

public class Grid {

    public class homeGraphics extends JComponent {

       homeGraphics (){
           setPreferredSize (new Dimension (450,600));
       }

        public void paint(Graphics g) {
            super.paint(g);
            g.fillRect (50,50,50,50);
        }
    }
    public void homeFrame(){
        JFrame frame1 = new JFrame ();
        frame1.setSize (450,600);
        frame1.setVisible(true);
        frame1.setResizable (false);
        frame1.setDefaultCloseOperation (frame1.EXIT_ON_CLOSE);

        JPanel panel1=new JPanel ();


        frame1.add(new homeGraphics());
        frame1.pack();
    }
    public static void main (String args[]){
        Grid Frame =new Grid ();
        Frame.homeFrame();
    }
}```

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Я никогда раньше не видел названия класса, используемого таким образом.

    Grid Frame =new Grid ();
    Frame.homeFrame();

Frame - это не имя класса. Первое утверждение объявляет переменную, поэтому Frame - это фактически имя локальной переменной ... и грубое нарушение принятых Java стандартов кодирования. Имя переменной должно всегда начинаться со строчной буквы, но это не требуется в спецификации языка Java, и компиляторы не обязательно будут предупреждать вас о вашей ошибке.

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


Так Я нашел линии ... онлайн, чтобы заставить мою программу работать.

И это одна из причин, почему новичкам плохо искать в Интернете, например, код. У Google нет механизма контроля качества. Вы должны судить, является ли то, что вы нашли, хорошим или плохим кодом, а у новичка нет знаний, чтобы принять такое решение.

0 голосов
/ 31 марта 2020
    Grid Frame =new Grid ();

создает новую переменную с именем Frame и типом Grid

    Frame.homeFrame();

выполняет нестати c publi c метод homeFrame из класса Grid

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

    Grid frame = new Grid();
    frame.homeFrame();
...