2015-04-12 60 views
2

我试过不同的方法来解决这个问题,但显然没有任何工作。因为我是新来的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); 
    } 


} 

回答

0

变化这

pane.add(results); 

pane.setViewportView(results); 

或该

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

setViewportView使用或getViewport().add设置组件jscrollpane .A所以你可以传递组件(jtextarea)给jscrollpane的构造函数。 read more about jscrollpane here

输出

enter image description here

+1

感谢您的回答,这正是我一直在寻找 – boboobobo