posisi kursor default jtextfield

Saya sedang mengerjakan JTextField dan kode untuk bidang teks. Saya mencoba membuat textfield sebesar notepad tetapi kursor selalu muncul di tengah. Saya ingin meletakkan di awal bidang teks.

tf=new JTextField(50);
tf.setCaretPosition(0);

f.setLayout(new BorderLayout());
f.add(tf,BorderLayout.CENTER);

person PROFESSOR    schedule 29.08.2009    source sumber


Jawaban (4)


Coba atur perataan teks:

JTextField textfield = new JTextField("Initial Text");

// Left-justify the text
textfield.setHorizontalAlignment(JTextField.LEFT);

// Center the text
textfield.setHorizontalAlignment(JTextField.CENTER);

// Right-justify the text
textfield.setHorizontalAlignment(JTextField.RIGHT);
person OMG Ponies    schedule 29.08.2009
comment
Saya tidak akan menandainya karena masih merupakan informasi yang berguna, namun bukan jawaban yang tepat -- JTextField defaultnya adalah perataan horizontal, dan masalah poster adalah perataan vertikal (seperti yang dapat Anda lihat dengan cepat jika Anda menjalankan kode). - person David Moles; 31.08.2009
comment
Ups -- seharusnya: defaultnya adalah perataan horizontal tengah. - person David Moles; 31.08.2009

Bukan pertanyaan yang sangat jelas. Karena Anda menambahkan bidang teks ke tengah BorderLayout, bidang teks akan secara otomatis diubah ukurannya secara vertikal dan horizontal untuk mengisi ruang yang tersedia dalam bingkai.

Secara default kursor akan muncul di kiri secara horizontal dan di tengah secara vertikal. Jadi saya kira keselarasan vertikal adalah apa yang Anda keluhkan. Yah, saya tidak tahu cara apa pun untuk menyelesaikan masalah ini karena begitulah cara kerja UI bidang teks.

Jika Anda mengubah ukuran font teks maka teks akan tampak lebih besar dan tanda sisipan akan tampak lebih ke atas.

Saya sarankan Anda menggunakan coba gunakan JTextArea. Area Teks Baris Tunggal mungkin berfungsi seperti itu kamu ingin.

person camickr    schedule 29.08.2009

Karena JTextField hanya menampung satu baris teks, sebaiknya Anda mengatur ukuran JTextField dengan lebih tepat.

Sejauh yang saya tahu tidak ada cara yang baik untuk melakukan apa yang Anda minta. Perhatikan bahwa meskipun ada setHorizontalAlignment(), tidak ada setVerticalAlignment() yang sesuai. setAlignmentY() juga tidak melakukannya (yang mengatur penyelarasan komponen yang ditambahkan ke wadah, yang tidak masuk akal untuk JTextField).

Anda dapat memalsukannya dengan menempatkan JTextField di utara BorderLayout, sebagai berikut:

tf.setBorder(null);
f.setBackground(Color.WHITE);
f.add(tf, BorderLayout.NORTH);  
f.add(Box.createVerticalGlue(), BorderLayout.CENTER);

Tapi saya menduga apa yang sebenarnya Anda inginkan mungkin berupa beberapa baris, dalam hal ini Anda harus menggunakan JTextArea.

person David Moles    schedule 31.08.2009

Anda harus menggunakan JScrollPane. Ini akan menyediakan bilah gulir, dan akan memenuhi kebutuhan Anda juga.

JTextArea area=new JTextArea();
JScrollPane scroll=new JScrollPane(area);
cnt.add(scroll);
area.setLineWrap(true);
scroll.setBounds(320, 100, 650, 300);
person NovoBook    schedule 16.03.2012
comment
usaha yang bagus :-) tapi sebenarnya ... bukan jawaban atas pertanyaan itu. Selain itu: jangan pernah melakukan pencarian/pengukuran komponen secara manual, itu adalah tugas eksklusif LayoutManager. - person kleopatra; 17.03.2012