2016-04-10 27 views
0

Java GUI programlama için nispeten yeniyim ve konseptler kafamda iyi bir şekilde geliyor olsa da, JFrame'deki boş alanı kaldırmayla ilgili şu küçük sorun var.Boş bir alanı JFrame'de nasıl temizlerim?

Aşağıda sahip olduğum kodu çalıştırırsanız, JTextFields ve JButton arasında önemli bir boşluk olduğunu fark edeceksiniz. Bu boşluğu kaldırmayı ve düğmenin en alttaki JTextField'a dokunmasını istiyorum. Ayrıca, başka bir küçük soru da. JTextFields'ın yüksekliğini yalnızca bir satır yerine üç sıra olacak şekilde nasıl artırırım? Her neyse, buradaki kod burada verilmiştir.

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


public class HW4GUI extends JFrame 
{ 

private JButton jbtAction; 
private JTextField jtfFName; 
private JTextField jtfLName; 
private JTextField jtfLibNo; 
private static int nextLibNo; 
private JPanel textPanel; 

public HW4GUI() 
{ 
    super("HW4GUI"); 
    makeFrame(); 
    showFrame(); 
} 

public void makeFrame() 
{ 
    setLayout(new BorderLayout()); 
    setResizable(false); 

    textPanel = new JPanel(); 
    textPanel.setLayout(new GridLayout(3,2)); 

    jbtAction = new JButton("Add Borrower");  

    JLabel FirstNameLabel = new JLabel("FirstName:"); 
    jtfFName = new JTextField(3); 

    JLabel LastNameLabel = new JLabel("LastName:"); 
    jtfLName = new JTextField(3); 

    JLabel LibNoLabel = new JLabel("Library Number:"); 
    jtfLibNo = new JTextField(3); 

    FirstNameLabel.setHorizontalAlignment(JTextField.RIGHT); 
    LastNameLabel.setHorizontalAlignment(JTextField.RIGHT); 
    LibNoLabel.setHorizontalAlignment(JTextField.RIGHT); 

    jtfLibNo.setEditable(false); 

    textPanel.add(FirstNameLabel); 
    textPanel.add(jtfFName); 
    textPanel.add(LastNameLabel); 
    textPanel.add(jtfLName); 
    textPanel.add(LibNoLabel); 
    textPanel.add(jtfLibNo); 

    add(textPanel, BorderLayout.NORTH); 
    add(jbtAction, BorderLayout.SOUTH); 
} 

public void showFrame() 
{ 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLocationRelativeTo(null); 
    setSize(400,200); 
    setVisible(true); 
} 

public void actionPerformed(ActionEvent e) 
{ 

} 
} 
+1

Ana yönteminiz nerede? Bu olmadan koşmak çok zor – Rocket6488

cevap

2

Her ikisi de çok kolay düzeltmelerdir. İlk soru için, ikincisini "SOUTH" yerine "CENTER" olarak ayarlayın ve ikinci soru için bunu birden çok satır olan bir JTextarea ya da çok büyük bir boyuta sahip olacak şekilde kaydırılabilen bir JScrollPane yapabilirsiniz. P.S. Aşağıdaki gibi çalıştırmak için her zaman bir ana yöntem eklemelisiniz.

public static void main(String[] args){ 
new HW4GUI(); 
} 
+0

Teşekkür ederim! Ancak benim değerlendirmem (bu üniversite çalışmasıdır) bir JTextField kullanmamı gerektirir, JTextField nesnesinde alan boyutunu arttıracak bir şey var mı? –

+0

Ne yazık ki bunun bildiğimden bu mümkün değil. JTextFields yalnızca tek satırlar, ancak [Java API dokümanlar] 'ı (http://docs.oracle.com/javase/8/docs/api/) burada bir şeyleri kaçırıyor olabileceğimi düşünüyorum. – Spork

+0

(1+) 'JTextField nesnesinde, alanın boyutunu artıracak herhangi bir şey var mı?' Hayır. Her bileşen bir şey yapmak için tasarlanmıştır. Bir JTextField, tek bir metin satırı görüntüleyen basit bir bileşendir. Bir JTextArea daha karmaşıktır ve çok sayıda metin satırı görüntüler. İş için uygun bileşeni kullanın. – camickr

İlgili konular