为什么边界布局的南部出现?

时间:2015-04-12 17:01:40

标签: java

我尝试了不同的方法来解决这个问题,但显然没有任何效果。因为我是java的新手,我实际上不知道我的代码是否有问题。 我已经尝试设置应该进入边框布局的南部部分的文本区域的大小,但是大小仍然很小看。

有人知道解决方案吗?

package package1;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class SimpleDatabasePanel extends JFrame implements ActionListener {

    private JMenuBar menuBar;

    private JMenu file;

    private JMenuItem save, load, quit;

    private JButton add, undo, find, delete, display;
    private JScrollPane pane;
    private JTable table;
    private JPanel panel;
    private JTextArea tName, tGNum, tGPA, results;
    private JLabel name, gNum, gpa;
    private LinkedList list;

public SimpleDatabasePanel(){
    setLayout(new BorderLayout());
    setTitle("Simple Database");
    //setSize(1000,1000);

    menuBar = new JMenuBar();
    setJMenuBar(menuBar);

    file = new JMenu("File");

    quit = new JMenuItem("Quit");
    save = new JMenuItem("Save");
    load = new JMenuItem("Load");

    add = new JButton("Add");
    undo = new JButton("Undo");
    find = new JButton("Find");
    delete = new JButton("Delete");
    display = new JButton("Display");

    tName = new JTextArea();
    tGNum = new JTextArea();
    tGPA = new JTextArea();
    results = new JTextArea(10,20);

    name = new JLabel("Name");
    gNum = new JLabel("G Number");
    gpa = new JLabel("GPA");

    list = new LinkedList();

    panel = new JPanel();
    panel.setLayout(new GridLayout(3, 4, 4, 4));

    //frame = new JFrame();
    pane = new JScrollPane();
    pane.setSize(300, 60);
    table = new JTable();
    menuBar = new JMenuBar();

    menuBar.add(file);

    file.add(save);
    file.add(load);
    file.add(quit);

    panel.add(name);
    panel.add(tName);
    panel.add(undo);
    panel.add(add);
    panel.add(gNum);
    panel.add(tGNum);
    panel.add(find);
    panel.add(delete);
    panel.add(gpa);
    panel.add(tGPA);
    panel.add(display);

    pane.add(results);

    add(menuBar, BorderLayout.NORTH);
    add(panel, BorderLayout.CENTER);
    add(pane, BorderLayout.SOUTH);
    this.pack();        

    ButtonListener listener = new ButtonListener();

    file.addActionListener(file.getAction());
    find.addActionListener(listener);
    undo.addActionListener(listener);
    save.addActionListener(this);
    quit.addActionListener(this);
    add.addActionListener(listener);
    load.addActionListener(this);
    delete.addActionListener(listener);
    display.addActionListener(listener);


}

public void actionPerformed(ActionEvent e) {
    JMenuItem file = (JMenuItem) e.getSource();

    if(file == quit){
        System.exit(0);
    }
    if(file == load){
        String filename = JOptionPane.showInputDialog("Enter File Name: ");
        (list).load(filename);
    }
    if(file == save){
        String filename = JOptionPane.showInputDialog("Enter File Name: ");
        (list).save(filename);
    }



}

private class ButtonListener implements ActionListener {

    public void actionPerformed(ActionEvent event) {

        if(event.getSource() == add){

        }
        if(event.getSource() == delete){

        }
        if(event.getSource() == display){

        }
        if(event.getSource() == find){

        }
        if(event.getSource() == undo){

        }
    }
}

public static void main(String[] args){
    SimpleDatabasePanel s =new SimpleDatabasePanel();
    s.setVisible(true);
    s.setResizable(false);
    }


}

1 个答案:

答案 0 :(得分:0)

更改此

pane.add(results);

到这个

pane.setViewportView(results);

或者

pane.getViewport().add(results, null);

使用setViewportViewgetViewport().add将组件设置为jscrollpane。您也可以将组件(jtextarea)传递给jscrollpane的构造函数。read more about jscrollpane here

输出

enter image description here

相关问题