Results (
Indonesian) 1:
[Copy]Copied!
tidak mengklaim bahwa cara saya lakukan adalah yang terbaik. Saya akan senang melihat jawaban lain dengan, mari kita mengatakan, semua pemandangan yang dilakukan dengan MigLayout. Ini akan menjadi sangat instruktif. Saya belajar Swing GUI ketika matahari implementasi hanya satu sehingga ia berlaku dalam gaya saya. Yang mengatakan, saya sarankan konsultasi kursus singkat ayunan GUI matahari. Ini juga mencakup sederhana studi kasus. Setelah membaca itu hampir seluruh bagian dari SudokuView harus jelas.Saya melakukan memisahkan kode untuk membuatnya lebih mudah dibaca. Itu sebabnya controller adalah kelas lain, bukan bagian dari pemandangan. Pandangan hanya untuk pembangunan widget dan tata letak, tetapi untuk membuatnya sederhana (tidak untuk membuat beberapa lebih kelas) saya juga menginisialisasi controller di dalamnya.Pekerjaan yang sebenarnya adalah di controller. Ini berisi rincian hairiest... Threading juga pergi ke sana sehingga tidak begitu jelas apa yang sebenarnya tidak. Saya menerapkan kelas Thread dari awal. Ada alternatif: menggunakan SwingWorker. Mungkin menjadi klise, tapi menjelaskan: saya menggunakan threading untuk membuat GUI responsif setiap saat. Tanpa tepat threading seluruh GUI akan membeku ketika perhitungan akan berlangsung. Saya memutuskan untuk membuatnya semudah mungkin dari Sudoku's implementasi sudut pandang, seperti non-blocking update inkremental.Adapun threading sangat penting untuk mengetahui kode yang berjalan di thread yang. Setiap tindakan yang dipecat oleh komponen GUI berjalan pada EDT (acara pengiriman thread). Jika Anda melakukan apapun tugas lama berjalan di atasnya, GUI tidak akan responsif. Jadi aku hanya membuat thread lain (Lihat pelaksanaan goButtonPressed()) dan memulai itu. Setelah itu EDT dapat memproses acara lainnya tanpa menghalangi.Jadi Anda Sudoku berjalan di latar belakang khusus, thread. Dapat melakukan apa pun yang diinginkannya, kecuali memiliki untuk memperbarui GUI. Itu hampir pasti akan, karena itulah parsial pembaruan di mana pergi. Di sini adalah menangkap: jika Anda memanggil setiap komponen GUI langsung (ditetapkan beberapa nilai) dari GUI akan membeku. Ini adalah suatu kondisi yang disebut EDT pengiriman pelanggaran. Semua interaksi dengan ayunan harus dilakukan pada EDT untuk menghindari membeku apapun. Bagaimana cara melakukannya? EDT memiliki antrian acara khusus hanya untuk itu. Anda memposting pembaruan acara di antrian. Pada EDT kode terus-menerus mengawasi untuk kejadian masuk dan update GUI sesuai. Jadi pada dasarnya, ini adalah komunikasi antara benang latar belakang dan EDT. Untuk mengirim peristiwa pada antrian Anda bisa menggunakan metode utilitas istimewa yang dirancang hanya untuk ini: EventQueue.invokeLater (baru Runnable() {/ * begini interaksi GUI Anda * /});. Lihatlah SudokuController metode: setSudokuResult() Umum setSudokuTime() Batal setSudokuCompleted()Itu adalah peristiwa update GUI yang diposting.
Being translated, please wait..
