Электронная библиотека » Алексей Крючков » » онлайн чтение - страница 1

Текст книги "Java Code"


  • Текст добавлен: 12 января 2018, 17:00


Автор книги: Алексей Крючков


Жанр: Программирование, Компьютеры


Возрастные ограничения: +12

сообщить о неприемлемом содержимом

Текущая страница: 1 (всего у книги 3 страниц) [доступный отрывок для чтения: 1 страниц]

Шрифт:
- 100% +

Введение


В этой небольшой книге собраны самые разные java-исходники, которые могут быть полезны начинающим программистам. Здесь вы найдете примеры кода как для android-приложений, так и для десктопных java-программ. Искренне надеюсь, что этот сборник поможет вам создавать интересные и полезные приложения!


Внимание! Для удобного просмотра скопируйте код в любой редактор с подсветкой синтаксиса.


AlertDialog(android)

Вызывается окно с некоторым сообщением(«сообщение») и кнопками «ДА», «НЕТ» и «ЗАКРЫТЬ».


AlertDialog.Builder b=new AlertDialog.Builder(this);

        b.setTitle(«Сообщение»);

        b.setMessage(«сообщение»);

        b.setCancelable(true);

        b.setNegativeButton(«НЕТ»,new DialogInterface.OnClickListener(){

            public void onClick(DialogInterface di, int id){

                di.cancel();

                t.setText(«Нет»);

            }

        });

        b.setPositiveButton(«ДА»,new DialogInterface.OnClickListener(){

            public void onClick(DialogInterface di,int id){

                di.cancel();

                t.setText(«Да»);

            }

        });

        b.setNeutralButton(«ЗАКРЫТЬ»,new DialogInterface.OnClickListener(){

            public void onClick(DialogInterface di,int id){

                di.cancel();

                t.setText(«Закрыть»);

            }

        });

        AlertDialog ad=b.create();

        ad.show();


Метод для сбора средств

Можно использовать кошелек Яндекс.Денег. По срабатыванию метода launchBrowser стартует дефолтный браузер с загруженной визиткой в сервисе Яндекс.Деньги.


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

        launchBrowser(«money.yandex.ru/to/номер_кошелька»);

    }

private void launchBrowser(String uriStr) {

        Desktop d;

        if (Desktop.isDesktopSupported()) {

            d = Desktop.getDesktop();

            if (d.isSupported(Desktop.Action.BROWSE)) {

                URI uri;

                try {

                    uri = new URI(«http://» + uriStr);

                    d.browse(uri);

                }

                catch (IOException | URISyntaxException ioe) {

                    JOptionPane.showMessageDialog(null,"ERROR!","WARNING",JOptionPane.ERROR_MESSAGE);

                }

            }

        }

    }


Метод для отправки писем

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


 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

        launchMail(edit.getText());

    }

    private void launchMail(String mailTo) {

        Desktop d;

        if (Desktop.isDesktopSupported()) {

            d = Desktop.getDesktop();

            if (d.isSupported(Desktop.Action.MAIL)) {

                URI uriMailTo;

                try {

                    if (mailTo.length() > 0) {

                        uriMailTo = new URI(«mailto», mailTo, null);

                        d.mail(uriMailTo);

                    } else {

                        d.mail();

                    }

                }

                catch (IOException | URISyntaxException ioe) {

                    JOptionPane.showMessageDialog(null,"ERROR!","WARNING",JOptionPane.ERROR_MESSAGE);

                }

            }

        }

    }


Логика для калькулятора ИМТ(Индекса Массы Тела)

Практически готовый калькулятор ИМТ. Может определять границы нормального веса, а также тип телосложения.


private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

     float rost,ves,i,index;

     String s,st,str;

     try{

     rost=Float.parseFloat(jTextField1.getText());

     ves=Float.parseFloat(jTextField2.getText());

     i=Float.parseFloat(jTextField3.getText());

     }catch(Exception e){

         JOptionPane.showMessageDialog(null,"Введите допустимые значения во все поля","ОШИБКА!",JOptionPane.ERROR_MESSAGE);

         return;

     }

     rost=rost/100;

     index=ves/(rost*rost);

     index=index*(pol/i);

     st=discriminator(n,i);

     str=normalMass(i, rost, pol);

     if(index<16)s="Дефицит массы";

     else if(index>=16&&index<20)s="Недостаточный вес";

     else if(index>=20&&index<25)s="Норма";

     else if(index>=25&&index<30)s="Предожирение";

     else if(index>=30&&index<35)s="Первая степень ожирения";

     else if(index>=35&&index<40)s="Вторая степень ожирения";

     else s="Морбидное ожирение";

     jTextArea1.setText(st+"nBMI="+String.valueOf(index)+"(«+s+»)n"+str);

    }

    String discriminator(int a,float b){

        String s="";

        switch(a){

            case 0:

                if(b<18)s="Пол: мужской.nТип телосложения: астенический.";

                else if(b>=18&&b<=20)s="Пол: мужской.nТип телосложения: нормостенический.";

                else s="Пол: мужской.nТип телосложения: гиперстенический.";

                break;

            case 1:

                if(b<15)s="Пол: женский.nТип телосложения: астенический.";

                else if(b>=15&&b<=17)s="Пол: женский.nТип телосложения: нормостенический.";

                else s="Пол: женский.nТип телосложения: гиперстенический.";

                break;

                default:

                break;

        }

        return s;

    }

    String normalMass(float x,float y,float z){

        float im=x*(y*y)/z;

        return «Нижняя граница нормального веса: „+20*im+“ кгnВерхняя граница нормального веса: „+25*im+“ кг»;

    }

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

      jTextField1.setText("");

      jTextField2.setText("");

      jTextField3.setText("");

      jTextArea1.setText("");

    }


    private void buttonActionPerformed(java.awt.event.ActionEvent evt) {

     System.exit(0);

    }


    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {

      n++;

      switch(n){

          case 1:

              jButton4.setText(«женский»);

              pol=16;

              break;

          case 2:

              jButton4.setText(«мужской»);

              pol=19;

              n=0;

              break;

      }

    }


Открытие записи через FileChooser

Открывает окно выбора файла. Метод readerFile – чтение из файла(см. ниже).


@FXML

    private void openItem(ActionEvent event) {

       FileChooser fileChooser = new FileChooser();

            fileChooser.setTitle(«Открытие записи»);

            fileChooser.setInitialDirectory(new File(path));

            File file = fileChooser.showOpenDialog(null);

            if (file != null) {

                t.setText(readerFile(file.getAbsolutePath()));

                label3.setText(file.getName());

            }  

    }


Сохранение записи через FileChooser

То же самое, что и в предыдущем примере, только для записи файла. Код неизвестных методов приводится ниже.


@FXML

    private void saveItem(ActionEvent event){

        if("".equals(t.getText())){

            toast(«Ничего нет для сохранения»);

            return;

        }

         FileChooser fileChooser = new FileChooser();

            fileChooser.setTitle(«Сохранение записи»);

            fileChooser.setInitialDirectory(new File(path));

            fileChooser.setInitialFileName(dateToDay(«Запись_от_dd_MMMM_yyyy_в_HH-mm-ss»));

            File file = fileChooser.showSaveDialog(null);

            if (file != null) {

             recordInFile(t.getText(),file.getAbsolutePath(),false);

             if(«все заметки».equals(file.getName()))return;

             recordInFile(«n»+file.getName()+" («+dayOfWeek()+»)"+"n"+

             t.getText(),path+System.getProperty(«file.separator»)+"все заметки", true);

             label3.setText(file.getName());

            }    

    }


Чтение и запись файла


void recordInFile(String text,String fileName,boolean b){

         try(FileWriter sw = new FileWriter(fileName,b)) {

       sw.write(text+"n");

       if(!b)

           toast(«Запись сохранена»);

    }catch(Exception e){

         toast(«Ошибка записи файла»);

   }    

    }

     String readerFile(String s){

          String str,f="";

        try{

            File file=new File(s);

            FileReader fr=new FileReader(file);

            BufferedReader br=new BufferedReader(fr);

            while((str = br.readLine()) != null){

                f+=str+"n";

            }

        }catch(IOException e){

             toast(«Ошибка чтения файла»);  

        }

        return f;

     }


Окно выхода из программы


@FXML

    private void exitItem(ActionEvent event){

         Alert alert = new Alert(AlertType.CONFIRMATION);

alert.setTitle(«ВЫХОД»);

alert.setHeaderText(«Выход из программы»);

alert.setContentText(«Вы действительно хотите выйти из программы?»);


Optional<ButtonType> resultAlert = alert.showAndWait();

if (resultAlert.get() == ButtonType.OK){

    System.exit(0);

}    

    }


Определение даты и дня недели


String dateToDay(String s){

        Calendar calendar=new GregorianCalendar();

        SimpleDateFormat sdf = new SimpleDateFormat(s);

         return sdf.format(calendar.getTime());

         }   

     String dayOfWeek(){

         Calendar calendar = Calendar.getInstance();

         String s="";

         switch(calendar.get(Calendar.DAY_OF_WEEK)){

             case 1:

                 s="воскресенье";

                 break;

                 case 2:

                     s="понедельник";

                     break;

                     case 3:

                         s="вторник";

                         break;

                         case 4:

                             s="среда";

                             break;

                             case 5:

                                 s="четверг";

                                 break;

                                 case 6:

                                     s="пятница";

                                     break;

                                     case 7:

                                         s="суббота";

                                         break;

                                         default:

                                             break;

         }

         return s;

     }


Всплывающее сообщение как в Android(Toast)

Этот метод можно встретить в вышеприведенных примерах. Попробуйте его в своих проектах и получите практически полную копию всплывающего сообщения как в android.


void toast(String toastMsg){

        Stage toastStage=new Stage();

        toastStage.setResizable(false);

        toastStage.initStyle(StageStyle.TRANSPARENT);


        Text text = new Text(toastMsg);

        text.setFont(Font.font(«Verdana», 20));

        text.setFill(Color.WHITE);


        StackPane root = new StackPane(text);

        root.setStyle(«-fx-background-radius: 10; -fx-background-color: rgba(0, 0, 0, 0.2); -fx-padding: 20px;»);

        root.setOpacity(0);


        Scene scene = new Scene(root);

        scene.setFill(Color.BLACK);

        toastStage.setScene(scene);

        toastStage.show();


        Timeline tl1 = new Timeline();

        KeyFrame fadeInKey1 = new KeyFrame(Duration.millis(500), new KeyValue (toastStage.getScene().getRoot().opacityProperty(), 1));

        tl1.getKeyFrames().add(fadeInKey1);   

        tl1.setOnFinished((ae) ->

        {

            new Thread(() -> {

                try

                {

                    Thread.sleep(2000);

                }

                catch (InterruptedException e)

                {

                    e.getMessage();

                }

                   Timeline tl2 = new Timeline();

                    KeyFrame fadeOutKey1 = new KeyFrame(Duration.millis(500), new KeyValue (toastStage.getScene().getRoot().opacityProperty(), 0));

                    tl2.getKeyFrames().add(fadeOutKey1);   

                    tl2.setOnFinished((aeb) -> toastStage.close());

                    tl2.play();

            }).start();

        });

        tl1.play();

    }

Генератор арифметического примера


 String arithSchema1(){

        int a,b,c,d;

        Random random=new Random();

        do {

            a=random.nextInt(100)+1;

            b=random.nextInt(100)+1;

            c=random.nextInt(1000)+1;

            d=random.nextInt(100)+2;

            result=a+b-c/d;

        }while (c%d!=0||c==d);

        return a+"+"+b+"-"+c+"/"+d;

    }


Генератор уравнения

Как и вышеприведенный пример может пригодиться при разработке какого-нибудь учебно-тренировочного приложения. Например, можно разработать программу для тестирования по математике и включить в нее этот код.


String equatSchema1(){

        int a,b,c,d,r;

        Random random=new Random();

        do {

            a=random.nextInt(100)+1;

            b=random.nextInt(100)+1;

            c=random.nextInt(1000)+1;

            d=random.nextInt(100)+2;

            r=a+b-c/d;

            result=d;

        }while (c%d!=0||c==d);

        return a+"+"+b+"-"+c+"/x"+"="+r;

    }


Чтение из внутреннего файла


 String readerInstruction(){

        String str,f="";

        try {

                InputStream is = ClassLoader.getSystemResourceAsStream(«res/textes/имя_файла.txt»);

    InputStreamReader isr = new InputStreamReader(is,Charset.forName(«UTF-8»));

            try (BufferedReader br = new BufferedReader(isr)) {       

            while((str=br.readLine())!=null){

                f+=str+"n";

            }

            }

        }

        catch (IOException e){

            e.getMessage();

        }

        return f;

    }

Окно сообщения


 void showMessage(String s,String s1,String s2){

          Alert alert = new Alert(AlertType.INFORMATION);

alert.setTitle(s2);

alert.setHeaderText(s1);


TextArea ta = new TextArea(s);

ta.setEditable(false);

ta.setWrapText(true);


ta.setMaxWidth(Double.MAX_VALUE);

ta.setMaxHeight(Double.MAX_VALUE);

GridPane.setVgrow(ta, Priority.ALWAYS);

GridPane.setHgrow(ta, Priority.ALWAYS);


GridPane gp = new GridPane();

gp.setMaxWidth(Double.MAX_VALUE);

gp.add(ta, 0, 0);

alert.getDialogPane().setContent(gp);

alert.showAndWait();

    }


Или еще вариант попроще:


 void alertWindow(String s1,String s2,String str){

        Alert alert = new Alert(AlertType.INFORMATION);

alert.setTitle(str);

alert.setHeaderText(s1);

alert.setContentText(s2);

alert.showAndWait();

    }

Создание директории и определение операционной системы


 void dirCreator(String fPath){

         File file=new File(fPath);

        if(!file.exists())file.mkdir();

    }


Это Windows?


   boolean isWindows() {

        String os = System.getProperty(«os.name»).toLowerCase();

        return (os.contains(«win»));

    }


Еще вариант посложнее и поуниверсальней:


public class Discriminator {


    /**

     * @param args the command line arguments

     */

    public static void main(String[] args) {

        if(isWindows()){

            System.out.println("Это Windows.n Версия: " + getOSVerion());

}else if(isMac()){

            System.out.println("Это Mac OS.n Версия: " + getOSVerion());

        }else if(isUnix ()){

            System.out.println("Это BSD или GNU/Linux.n Версия: " + getOSVerion());

        }else{

            System.out.println(«Неизвестная система»);

        }

    }

    public static boolean isWindows(){


        String os = System.getProperty(«os.name»).toLowerCase();

        //windows

        return (os.contains(«win»));


    }


    public static boolean isMac(){


        String os = System.getProperty(«os.name»).toLowerCase();

        //Mac

        return (os.contains(«mac»));


    }


    public static boolean isUnix (){


        String os = System.getProperty(«os.name»).toLowerCase();

        //linux or unix

        return (os.contains(«nix») || os.contains(«nux»));


    }

    public static String getOSVerion() {

        String os = System.getProperty(«os.version»);

        return os;

    }

}


SplashScreen(android)

Заставка для приложения.


package kalexal.kaa.advices;


import android.content.Intent;

import android.os.Handler;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;


public class Splash extends AppCompatActivity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_splash);


        new Handler().postDelayed(new Runnable() {

            @Override

            public void run() {

                Intent intent=new Intent(Splash.this,MainActivity.class);

                startActivity(intent);

                finish();

            }

        },3000);

    }

}


SplashScreen для десктопного приложения


public class Splash extends Application{

   static SplashScreen mySplash;

    public static void main(String[] args) throws Exception

    {

        mySplash=SplashScreen.getSplashScreen();

         try

            {

                Thread.sleep(5000);  

            }

            catch (InterruptedException ex)

            {

                ex.getMessage();

            }


        if (mySplash != null){   

            mySplash.close();

            launch(ClassName.class, args);

        }

    }

      @Override

    public void start(Stage primaryStage) throws Exception {

        throw new UnsupportedOperationException(«Not supported yet.»);

    }

}


Проверка корректности ввода даты

Может проверять високосность года.


boolean inputCorrect(int n,int m,int l){

        int days=0;

        switch (l) {

            case 1:

                days = 30;

                break;

            case 2:

                if (m % 4 == 0 && m % 100 != 0 || m % 400 == 0) days = 29;

                else days = 28;

                break;

            case 3:

                days = 31;

                break;

            case 4:

                days = 30;

                break;

            case 5:

                days = 31;

                break;

            case 6:

                days = 30;

                break;

            case 7:

                days = 31;

                break;

            case 8:

                days = 31;

                break;

            case 9:

                days = 30;

                break;

            case 10:

                days = 31;

                break;

            case 11:

                days = 30;

                break;

            case 12:

                days = 31;

                break;

            default:

                break;

        }

            if(l<1||l>12){

                JOptionPane.showMessageDialog(null,"Некорректный номер месяца! Проверьте соответствие введённых данных.","ВНИМАНИЕ!",JOptionPane.WARNING_MESSAGE);

                month.requestFocus();

                return true;

            }

            else if (n>days||n==0){

                JOptionPane.showMessageDialog(null,"Некорректное число месяца! Проверьте соответствие введённых данных.","ВНИМАНИЕ!",JOptionPane.WARNING_MESSAGE);

                day.requestFocus();

                return true;

            }else if (m==0||m<1000||m>9999){

                JOptionPane.showMessageDialog(null,"Номер года вне диапазона! Номер года должен быть в диапазоне от 1000 до 9999 включительно.","ВНИМАНИЕ!",JOptionPane.WARNING_MESSAGE);

                year.requestFocus();

                return true;

            }else {

                return false;

            }

    }


Генератор паролей

Может создавать пароли как из встроенных наборов символов, хранящихся в файле «combinations», так и из пользовательских наборов.


@FXML

    private void passwordGenerateButton(ActionEvent event) {

        int pasLength=0,pasQuantitet;

        String argument,pas,multiPas="";

         if(isNullInField(e1.getText())){

             alertWindow("", «Укажите длину пароля.», «Ошибка»);

             e1.requestFocus();

             return;

         }

         if(isNullInField(e2.getText())){

             alertWindow("", «Укажите количество паролей.», «Ошибка»);

             e2.requestFocus();

             return;

         }

         try{

             pasLength=Integer.parseInt(e1.getText());

             pasQuantitet=Integer.parseInt(e2.getText());

         }catch(NumberFormatException ex){

             ex.getMessage();

             alertWindow(«Некорректные данные!», «Введите целое число!», «Внимание!»);

             if(pasLength==0){

                 e1.requestFocus();

             }

             else {

                 e2.requestFocus();

             }

             return;

         }

         if(pasLength<1||pasLength>1000){

            alertWindow("", «Длина пароля должна быть от 1 до 1000 символов.», «Ошибка»);

            e1.requestFocus();

            return;  

        }

         if(pasQuantitet<1||pasQuantitet>100){

             alertWindow("", «Количество паролей должно быть от 1 до 100», «Ошибка»);

             e2.requestFocus();

             return;

         }

         if(isNullInField(e.getText())){

           argument=combinationsReader(cb.getSelectionModel().getSelectedIndex()+1);

        }else{

           argument=e.getText();

         }

         for(int i=0;i<pasQuantitet;i++){

             pas=passwordCreator(argument,pasLength);

             if("".equals(pas)){

                 alertWindow(«Некорректный символ!», «Удалите все пробелы!»,"Внимание!");

                 e.requestFocus();

                 return;

             }

             multiPas+=pas+"n";

         }

         text.setText(multiPas);

    }

    boolean isNullInField(String sField){

        return sField==null||sField.trim().length()==0;

    }

    String passwordCreator(String s,int q){

        String str="";

        Random r=new Random();

                char[]masSymbols=s.toCharArray();

                for (int i=0;i<s.length();i++){

                    if (masSymbols[i]==' '){

                        return "";

                    }

                }

                for (int i=0;i<q;i++){

                    str+=masSymbols[r.nextInt(s.length())]+"";

                }

        return str;

    }

    String combinationsReader(int m){

        String str="";

        try {

                InputStream is = ClassLoader.getSystemResourceAsStream(«res/textes/combinations»);

    InputStreamReader isr = new InputStreamReader(is);

            try (BufferedReader reader = new BufferedReader(isr)) {

                for (int i=0;i<m;i++){

                    str=reader.readLine();

                }

            }

        }

        catch (IOException ex){

            ex.getMessage();

        }

        return str;

    }

Внимание! Это не конец книги.

Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!

Страницы книги >> 1
  • 0 Оценок: 0

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации