Почему порядок вкладок в JTabbedPane
влияет, если содержимое вкладки работает так, как ожидалось?Вкладки в JTabbedPane влияют на содержимое
Я пишу свое первое расширенное приложение и испытываю некоторые проблемы с моей JTabbedPane. Вот что у меня есть:
public ProjectTracker() {
initialize();
newJobTab();
newUpdateTab();
newReportsTab();
}
newJobTab(), newUpdateTab() и newReportsTab() помещаются в JTabbed панели в методе Initialize(). Каждый из них создает экземпляр класса GUI, который я создал. В основном он имеет кучу текстовых полей и comboboxes и т. Д., И они взаимодействуют с базой данных, чтобы заполнить поля или собрать информацию из полей.
Функциональность кнопок на вкладке - основное различие между тремя. Индивидуально каждая вкладка работает так, как я ожидал. Когда я помещаю их в панель Tabbed, только третья вкладка работает правильно. Если я переключаю порядок, это та же сделка. Какая бы ни была третья вкладка, она единственная, которая функционирует так, как я хочу.
Вот мой вариант моего первоначального сообщения ... теперь с кодом.
public class SampleTracker {
private JFrame frmProjectTracker;
private JTabbedPane tabbedPane;
public String Title;
SampleTJV newJobPanel;
SampleTJV updatePanel;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SampleTracker window = new SampleTracker();
window.frmProjectTracker.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public SampleTracker() {
initialize();
newJobTab();
newUpdateTab();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmProjectTracker = new JFrame();
frmProjectTracker.setBounds(100, 100, 662, 461);
frmProjectTracker.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmProjectTracker.getContentPane().setLayout(new FormLayout(new ColumnSpec[] {
ColumnSpec.decode("662px"),},
new RowSpec[] {
RowSpec.decode("50px"),
RowSpec.decode("389px"),}));
tabbedPane = new JTabbedPane(JTabbedPane.TOP);
frmProjectTracker.getContentPane().add(tabbedPane, "1, 2, fill, fill");
}
private void newJobTab(){
newJobPanel = new SampleTJV();
newJobPanel.UpdateButton.setText("Enter Job");
tabbedPane.addTab("Enter New Job", null, newJobPanel, null);
newJobPanel.UpdateButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
newJobPanel.collectInfo();
Title = newJobPanel.Title;
//Here the connection to DB is made and the Title is written to DB
newJobPanel.newJobField.setText(Title);
}
});
}
private void newUpdateTab(){
updatePanel = new SampleTJV();
newJobPanel.UpdateButton.setText("Update Job");
tabbedPane.addTab("Update Job", null, updatePanel, null);
updatePanel.UpdateButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
updatePanel.collectInfo();
Title = updatePanel.Title;
updatePanel.updateJobField.setText(Title);
}
});
}
}
public class SampleTJV extends JPanel {
private static final long serialVersionUID = 1L;
public static JTextField TitleField;
public String Title;
public JButton UpdateButton;
public JTextField newJobField;
public JTextField updateJobField;
/**
* Create the panel.
*/
public SampleTJV() {
setLayout(null);
TitleField = new JTextField();
TitleField.setColumns(10);
TitleField.setBounds(109, 6, 134, 28);
add(TitleField);
newJobField = new JTextField();
newJobField.setBounds(171, 79, 134, 28);
add(newJobField);
newJobField.setColumns(10);
UpdateButton = new JButton("Update Job");
UpdateButton.setBounds(267, 7, 112, 29);
add(UpdateButton);
JLabel lblNewJobResult = new JLabel("New Job Result");
lblNewJobResult.setBounds(47, 85, 112, 16);
add(lblNewJobResult);
JLabel lblUpdateJobResult = new JLabel("Update Job Result");
lblUpdateJobResult.setBounds(47, 125, 112, 16);
add(lblUpdateJobResult);
updateJobField = new JTextField();
updateJobField.setColumns(10);
updateJobField.setBounds(171, 119, 134, 28);
add(updateJobField);
}
public void collectInfo(){
Title = TitleField.getText();
}
}
Вам нужно будет отправить код. Я предполагаю, что у вас есть статические переменные и методы, которые должны быть переменными и методами экземпляра. Также не забудьте определить, что «не работает». Что происходит точно? Любое исключение? что? –
как вы добавляете эти вкладки в JTabbedPane? некоторый код ...? –
1) * «Я не уверен, как я могу опубликовать больше кода, не отправляя тонны кода». * Для лучшей помощи, скорее всего, отправьте ** [SSCCE] (http://sscce.org/). ** 2) Всегда копировать/вставлять вывод ошибок и исключений. –