В этой программе все компилируется и похоже, что я добавил все панели кнопок и текстовые поля, но когда я запускаю программу, главная панель отображается без каких-либо добавленных объектов. Всплывающий экран выключения отображается правильно. Ниже приведен класс GUI. Я попытался сделать компоненты опубликованы c, и это ничего не изменило. Подпанель должна работать должным образом в соответствии с этим. Однако, может быть, пара глаз sh поможет мне увидеть то, чего мне не хватает.
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class BinarySearchTreeGUI {
private JFrame mainF;
private JPanel bstMain;
private JPanel sortOrder;
private JPanel numType;
JRadioButton ascendingB = new JRadioButton("Ascending");
JRadioButton descendingB = new JRadioButton("Descending");
JRadioButton integerB = new JRadioButton("Integer");
JRadioButton fractionB = new JRadioButton("Fraction");
private JButton button;
public JTextField unsortedList, sortedList;
private JLabel l1, l2;
@SuppressWarnings("OverridableMethodCallInConstructor")
BinarySearchTreeGUI() {
launchApp();
}
private void launchApp() {
createNewComponents();
setDisplayFrame();
setComponents();
setComponentsEditableVisible();
addComponents();
onShutDownRequest();
}
private ButtonAction buttonActionOnClick() {
return new ButtonAction(unsortedList);
}
private void addComponents() {
mainF.add(bstMain);
bstMain.add(button);
bstMain.add(l1);
bstMain.add(l2);
bstMain.add(sortedList);
bstMain.add(unsortedList);
buttonActionOnClick();
}
private void setComponentsEditableVisible() {
sortedList.setEditable(false);
mainF.setVisible(true);
}
private void setComponents() {
bstMain.setLayout(null);
button.setBounds(180, 160, 120, 30);
l1.setBounds(50, 15, 200, 25);
l2.setBounds(55, 90, 200, 25);
sortedList.setBounds(120, 90, 280, 25);
unsortedList.setBounds(120, 15, 280, 25);
setSubPanels();
}
private void createNewComponents() {
mainF = new JFrame("Binary Search Tree Sort");
bstMain = new JPanel();
button = new JButton("Perform Sort");
l1 = new JLabel("Original List");
l2 = new JLabel("Sorted List");
unsortedList = new JTextField();
sortedList = new JTextField();
sortOrder = new JPanel();
numType = new JPanel();
}
private void setDisplayFrame() {
mainF.setSize(550, 350);
mainF.setResizable(false);
mainF.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
private void onShutDownRequest() {
mainF.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int reply;
reply = JOptionPane.showConfirmDialog(mainF, "Would you like to Shutdown this Program", "Shutdown Request", JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
});
}
private void setSubPanels() {
createPanelSubPanel(5, "Sort Order", sortOrder, ascendingB, descendingB);
createPanelSubPanel(260, "Numeric Type", numType, integerB, fractionB);
}
private void createPanelSubPanel(int location, String title, JPanel panel, JRadioButton ascendingB, JRadioButton descendingB) {
panel.setLayout(new GridLayout(2, 1));
panel.setBounds(location, 240, 230, 70);
TitledBorder title1;
title1 = BorderFactory.createTitledBorder(title);
panel.setBorder(title1);
ascendingB.setSelected(false);
descendingB.setSelected(true);
ButtonGroup bg = new ButtonGroup();
//add buttons
bg.add(ascendingB);
bg.add(descendingB);
panel.add(ascendingB);
panel.add(descendingB);
bstMain.add(panel);
}
private class ButtonAction extends BinarySearchTree {
ButtonAction(JTextField textField) {
button.addActionListener((ActionEvent event) -> {
CheckData reviewData = new CheckData();
BinarySearchTree<String> unsortedList = new BinarySearchTree<>();
if (integerB.isSelected()) {
sortedList.setText(unsortedList.inOrderSort(unsortedList.root));
}
else {
sortedList.setText(unsortedList.desOrderSort(unsortedList.root));
}
});
}
}
}