Как я могу отобразить JTable на JFrame - PullRequest
0 голосов
/ 03 января 2019

Я провел часы в Интернете и боюсь, что не могу понять, как заставить мой JTable показываться рядом с моим JButton на JFrame, если у кого-то есть простой или всеобъемлющий способ объяснить, почему и как исправить проблему, я действительно ценю это.

Обширное онлайн-исследование, включая загрузку образцов и применение различных предложений; также обратилась к моей учительнице за помощью, но она не имеет большого опыта работы с Java.

public class canvas extends JTable{
    static void displayJFrame(){
        //set variables
        int i = 0;
        String[][] strArray = new String[3][i];
        String[] labelArray = new String[3];
        labelArray[0] = "Name: ";
        labelArray[1] = "Subject: ";
        labelArray[2] = "Average: ";
        //create JFrame
        JFrame f = new JFrame("Test Average");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().setBackground(Color.WHITE);
        f.setPreferredSize(new Dimension(600, 600));
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
        //create JButton
        JButton button=new JButton("Enter New Grade");  
        button.setBounds(450,15,140, 40);
        button.addActionListener(e -> average(strArray, i));//gets info from user and adds to strArray
        button.addActionListener(e -> count(i));//increases counter
        f.add(button);
        //create JTable
        JTable j = new JTable(strArray, labelArray);
        JScrollPane scrollPane = new JScrollPane(j);
        j.setBounds(30, 40, 200, 300);
        j.setSize(500, 200); 
        j.setVisible(true);
    }
}

весь мой код выполняется должным образом, за исключением того, что нет таблицы, я также пробовал так много вещей, которые не работали, так что это в основном то, с чего я начал, чтобы он не был переполнен тоннами неправильных вещей

1 Ответ

0 голосов
/ 03 января 2019

У вас есть несколько проблем.Во-первых, по умолчанию JFrame использует BorderLayout.Использование метода add (component) по умолчанию помещает этот компонент в центр.Использование того же метода add () снова просто заменяет новый компонент в центре.

Во-вторых, не упаковывайте и не устанавливайте видимую рамку, пока ПОСЛЕ создания всего графического интерфейса пользователя.

Вы быЛучше создайте JPanel и добавьте компоненты к этой панели, затем добавьте панель к рамке.Диспетчером макетов по умолчанию для JPanel является FlowLayout.

...