문제:
JTable이 JFrame 내에 표시되지 않습니다. 에 추가되는 중
조사:
제공된 코드는 add(tbl_Accounts) 및 add(scrollPane)를 사용하여 JFrame에 JTable을 추가하려고 시도합니다. 그러나 문제는 다른 곳에 있는 것 같습니다.
근본 원인:
댓글에서 언급했듯이 setLayout(null)을 사용하면 구성 요소 배치에 문제가 발생할 수 있습니다. JFrame에 테이블을 추가하는 동안 잘못된 레이아웃 관리로 인해 테이블이 표시되지 않습니다.
해결 방법:
이를 해결하려면 적절한 레이아웃 관리자가 필요합니다. 사용된. 이 예에서는 BorderLayout과 GridLayout의 조합을 사용할 수 있습니다.
수정된 코드:
다음 수정된 코드는 메인 패널에 GridLayout을 사용하고 패널에 BorderLayout을 사용합니다. 상단 패널 및 하단 패널의 BoxLayout:
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; public class JTableFrameExample { private JFrame frame; private JPanel mainPane; private JPanel topPane; private JPanel tablePane; private JPanel bottomPane; // ... (code continues as before) public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new JTableFrameExample().createAndShowGui(); } }); } public void createAndShowGui() { frame = new JFrame(getClass().getSimpleName()); int rows = 30; int cols = 3; String[][] data = new String[rows][cols]; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { data[i][j] = i + "-" + j; } } String[] columnNames = { "Column1", "Column2", "Column3" }; table = new JTable(data, columnNames); scroll = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); table.setPreferredScrollableViewportSize(new Dimension(420, 250)); table.setFillsViewportHeight(true); frame.setLayout(new BorderLayout()); topPane = new JPanel(); topPane.setLayout(new BorderLayout()); JLabel selectAccountLabel = new JLabel("Select Account"); topPane.add(selectAccountLabel, BorderLayout.WEST); JButton selectAccountButton = new JButton("Select Account"); topPane.add(selectAccountButton, BorderLayout.EAST); frame.add(topPane, BorderLayout.NORTH); tablePane = new JPanel(); tablePane.add(scroll); frame.add(tablePane, BorderLayout.CENTER); bottomPane = new JPanel(); bottomPane.setLayout(new GridLayout(0, 5, 3, 3)); // ... (code continues as before) frame.add(bottomPane, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
이 업데이트된 코드에서는 BoxLayout이 제거되었습니다. 이를 통해 BottomPane의 구성요소를 보다 격자형 방식으로 배열할 수 있습니다. 프레임의 BorderLayout은 topPane 및 tablePane 구성 요소에 사용되었으므로 이러한 요소를 쉽게 배치할 수 있습니다.
이러한 변경으로 인해 JTable은 이제 JFrame 내에서 올바르게 표시됩니다.
위 내용은 내 JTable이 내 JFrame(Java)에 표시되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!