Есть ли способ увеличить размер редактируемой текстовой области (java)?

#java #swing #layout-manager #grid-layout #jtextarea

#java #swing #layout-manager #сетка-макет #jtextarea

Вопрос:

Здравствуйте, я работал над созданием библиотечной системы, и здесь, в этом текстовом поле, я должен отображать книги с помощью поиска, поэтому он должен быть в состоянии вместить около 3 книг, прежде чем пользователю придется прокручивать, чтобы прочитать остальные результаты, я знаю, что при использовании макета сетки все места отображаютсякто-нибудь может мне помочь и сказать, как я могу увеличить эту текстовую область?

https://i.stack.imgur.com/tARJu.png

вот мой код, и моя текстовая область находится на панели P [6], если вы хотите понять, в чем проблема

 import javax.swing.*;
import java.awt.*;
public class MainFrame extends JFrame{
    JLabel NewBook;
    JLabel ADD;
    JTextField ISBNin,Titlein,Authorin,Yearin,Editionin;
    JButton Clear;
    JButton Insert;
    JLabel []EmptyLabel;
    JPanel []P;
    JSeparator J;
    JLabel SearchBook;
    JRadioButton ISBNRB,TitleRB,AuthorRB,YearRB;
    ButtonGroup radioGroup;
    JTextField SearchBy;
    JButton Find;
    JTextArea SearchTextArea;
    int []s;
    Font NBF=new Font("Serif",Font.BOLD,20);
    public MainFrame() {
        super("Library System");
        setLayout(new GridLayout(22,1,1,1));
        NewBook=new JLabel("  NEW BOOK");
        NewBook.setFont(NBF);
        NewBook.setForeground(Color.RED);
        add(NewBook);
        ADD=new JLabel(" ISBN                                           Title                                        Author                                       Published Year                       Edition");
        ISBNin=new JTextField(15);
        Titlein=new JTextField(15);
        Authorin=new JTextField(15);
        Yearin=new JTextField(15);
        Editionin=new JTextField(15);
        P=new JPanel[10];
        P[0]=new JPanel();
        P[0].setLayout(new GridLayout(1,1));
        P[0].add(ADD);
        add(P[0]);
        P[1]=new JPanel();
        P[1].setLayout(new GridLayout(1,5));
        P[1].add(ISBNin);
        P[1].add(Titlein);
        P[1].add(Authorin);
        P[1].add(Yearin);
        P[1].add(Editionin);
        add(P[1]);
        EmptyLabel=new JLabel[20];
        Insert=new JButton("Insert");
        Clear=new JButton("Clear");
        Clear.setHorizontalAlignment(JButton.CENTER);
        P[2]=new JPanel();
        P[2].setLayout(new GridLayout(1,10));
        for(int i=0;i<20;i  )
            EmptyLabel[i]=new JLabel("");
        for(int i=0;i<4;i  )
            P[2].add(EmptyLabel[i]);
        P[2].setAlignmentX(CENTER_ALIGNMENT);
        P[2].add(Insert);
        P[2].add(Clear);
        for(int i=4;i<8;i  )
            P[2].add(EmptyLabel[i]);
        add(P[2]);
        J=new JSeparator();
        add(J);
        SearchBook=new JLabel("SEARCH BY");
        SearchBook.setFont(NBF);
        SearchBook.setForeground(Color.RED);
        P[3]=new JPanel();
        P[3].setLayout(new GridLayout(1,1,5,5));
        P[3].add(SearchBook);
        add(SearchBook);
        ISBNRB=new JRadioButton("ISBN",true);
        TitleRB=new JRadioButton("Title",false);
        YearRB=new JRadioButton("Published",false);
        AuthorRB=new JRadioButton("Author",false);
        P[4]=new JPanel();
        P[4].setLayout(new GridLayout(1,4));
        radioGroup=new ButtonGroup();
        radioGroup.add(ISBNRB);
        radioGroup.add(TitleRB);
        radioGroup.add(AuthorRB);
        radioGroup.add(YearRB);
        P[4].add(ISBNRB);
        P[4].add(TitleRB);
        P[4].add(AuthorRB);
        P[4].add(YearRB);
        add(P[4]);
        SearchBy=new JTextField(21);
        Find=new JButton("Find");
        Find.setSize(20, 100);
        P[5]=new JPanel();
        P[5].setLayout(new GridLayout(1,4,5,1));
        P[5].add(Find);
        P[5].add(SearchBy);
        for(int i=8;i<11;i  )
            P[5].add(EmptyLabel[i]);
        add(P[5]);
        P[6]=new JPanel();
        P[6].setLayout(new GridLayout());
        SearchTextArea=new JTextArea(" ISBN                                          Title                                        Author                                       Published Year                       EditionnISBN                                          Title                                        Author                                       Published Year                       Edition",500,580);
        SearchTextArea.setEditable(false);
        P[6].add(new JScrollPane(SearchTextArea));
        Dimension D=new Dimension();
        D.setSize(200, 580);
        P[6].setPreferredSize(D);
        add(P[6]);
        setSize( 780, 580 );
        setResizable(false);
    }
    public static void main( String[] args )
    { 
    MainFrame MF = new MainFrame(); 
    MF.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
     // set frame size
    MF.setVisible( true ); // display frame
    }
}

 

Комментарии:

1. 1) Имена переменных НЕ должны начинаться с символа верхнего регистра. Любой учебник или учебник, который я когда-либо видел, следует этому соглашению Java. Узнайте на примере. 2) Прочитайте API JTextArea. Вы можете передать параметры, чтобы определить количество строк по умолчанию для текстовой области. 3) Не используйте текстовую область. Я бы предположил, что a JTable будет лучшим компонентом для отображения информации о вашей книге. Прочитайте руководство по Swing о том, как использовать таблицы . Если вам действительно нужен JTextAre, в руководстве также есть раздел о том, как использовать текстовую область.

2. Я знаю, что при использовании макета сетки все места будут распределены равномерно, — тогда вам также может потребоваться вложить панели, используя разные менеджеры компоновки, для достижения желаемого макета. Опять же, в руководстве есть примеры.

3. Вау. 8 макетов сетки. Изучите другие макеты. Макет сетки имеет очень ограниченное применение. Также обратите внимание, что числа в конце конструкторов текстовой области представляют собой строки и столбцы, а не пиксели, и что большая часть кода (включая этот) не должна устанавливать размеры или предпочтительные размеры.