3 개의 JPanel을 구현하는 다음 클래스가 있습니다. 나는이를 컴파일 할 때BorderLayout을 사용하여 JPanel에서 오브젝트를 배치하는 방법은 무엇입니까?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.*;
import javax.swing.event.*;
class netTable implements ActionListener, TableModelListener
{
JFrame frame;
JTable table;
Vector rows,columns;
DefaultTableModel tabModel;
JScrollPane scrollPane;
JLabel lblMessage;
JButton cmdLookup, cmdUpdatePlan;
JPanel topPanel,mainPanel,buttonPanel;
public static void main(String[] args)
{
netTable t=new netTable();
}
netTable()
{
rows=new Vector();
columns= new Vector();
String[] columnNames =
{
"ID",
"Client",
"Plan",
"Amount"
};
addColumns(columnNames);
tabModel=new DefaultTableModel();
tabModel.setDataVector(rows,columns);
table = new JTable(tabModel);
scrollPane= new JScrollPane(table);//ScrollPane
table.setRowSelectionAllowed(false);
table.getModel().addTableModelListener(this);
topPanel = new JPanel();
lblMessage=new JLabel("Invoices to Update");
topPanel.add(lblMessage);
buttonPanel=new JPanel();
cmdLookup=new JButton("Lookup");
cmdUpdatePlan = new JButton("Update Plan");
buttonPanel.add(cmdLookup);
buttonPanel.add(cmdUpdatePlan);
cmdLookup.addActionListener(this);
cmdUpdatePlan.addActionListener(this);
mainPanel=new JPanel();
frame=new JFrame("Update Table");
frame.setSize(500,500);
frame.setExtendedState(JFrame.ICONIFIED);
mainPanel.setLayout(new BorderLayout());
mainPanel.add(topPanel,BorderLayout.NORTH);
mainPanel.add(buttonPanel,BorderLayout.CENTER);
mainPanel.add(scrollPane,BorderLayout.SOUTH);
topPanel.setBackground(Color.gray);
mainPanel.setBackground(Color.white);
buttonPanel.setBackground(Color.white);
table.getParent().setBackground(Color.black);
frame.getContentPane().add(mainPanel);
frame.addWindowListener(new WindowCloser());
frame.setVisible(true);
}
}
, 그것은 그 아래 상단에있는 buttonPanel, 공간, 다음 스크롤을 표시 한 패널 옆에있는 버튼이며, 세 번째는 내 코드에 설명 된대로 테이블, 레이블이 topPanel이 맨 위에 표시되어야하는 레이블을 두지 마십시오. 어떤 아이디어? BorderLayout 위치가 잘못되었다고 생각하고 있습니다.
'mainPanel.add (ScrollPane, BorderLayout.SOUTH);가 아니며'mainPanel.add (scrollPane, BorderLayout.SOUTH); '가되어야합니까? –
음, 편집장이 대문자로 표기했습니다. 고침을 드리겠습니다. – phill