I am a beginner programmer making an application with a JTabbedPane, that has by default only one tab. If the user clicks a "Add tab" button, a new tab is given. The new tab has some jtextfields and comboboxes. I want to get the text from the new tab's components (jtextfields, combobes), but i do not know how to access it. (so that i could use ".getText()" functions)
Also, can you guys give me a hint: what is the fastest/best way to save such text from all tabs to a formatted ".txt" file without hardcoding?
Thanks in advance, if you need more info, i will post it :)
Code for adding new tabs (after button is clicked, new JPanel form is added with some jtextfields):
private void dodajOsebo_buttonActionPerformed(java.awt.event.ActionEvent evt) {
int tabNum = OsebniPodatki_TabbedPane.getTabCount() + 1;
OsebniPodatki_TabbedPane.addTab("Oseba " + tabNum, new PodatkiOStranki());
PodatkiOPotovanju_TabbedPane.addTab("Oseba " + tabNum, new PodrobnostiPotovanja());
}
Code for one of the custom JPanel forms:
package FRI;
public class PodatkiOStranki extends javax.swing.JPanel {
metode m = new metode();
public PodatkiOStranki() {
initComponents();
}
private void initComponents() {
spol_buttonGroup = new javax.swing.ButtonGroup();
podatki_LABEL = new javax.swing.JLabel();
Ime_op = new javax.swing.JLabel();
Priimek_op = new javax.swing.JLabel();
Spol = new javax.swing.JLabel();
PotniList_op = new javax.swing.JLabel();
Naslov_op = new javax.swing.JLabel();
kraj_op = new javax.swing.JLabel();
elPosta_op = new javax.swing.JLabel();
ime_field = new javax.swing.JTextField();
priimek_field = new javax.swing.JTextField();
spol_m = new javax.swing.JRadioButton();
spol_z = new javax.swing.JRadioButton();
potniList_field = new javax.swing.JTextField();
naslov_field = new javax.swing.JTextField();
kraj_field = new javax.swing.JTextField();
elPosta_field = new javax.swing.JTextField();
ponastaviVnos_button = new javax.swing.JButton();
setMaximumSize(new java.awt.Dimension(400, 600));
setMinimumSize(new java.awt.Dimension(375, 562));
setPreferredSize(new java.awt.Dimension(375, 562));
podatki_LABEL.setFont(new java.awt.Font("Lucida Grande", 1, 24)); // NOI18N
podatki_LABEL.setText("Podatki o stranki");
Ime_op.setText("Ime:");
Priimek_op.setText("Priimek:");
Spol.setText("Spol:");
PotniList_op.setText("Št. potnega lista:");
Naslov_op.setText("Naslov:");
kraj_op.setText("Kraj & poštna št:");
elPosta_op.setText("E-pošta:");
ime_field.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
ime_fieldKeyTyped(evt);
}
});
priimek_field.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
priimek_fieldKeyTyped(evt);
}
});
spol_buttonGroup.add(spol_m);
spol_m.setText("Moški");
spol_buttonGroup.add(spol_z);
spol_z.setText("Ženska");
kraj_field.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
kraj_fieldKeyTyped(evt);
}
});
ponastaviVnos_button.setFont(new java.awt.Font("Lucida Grande", 1, 14)); // NOI18N
ponastaviVnos_button.setText("Ponastavi vnos");
ponastaviVnos_button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ponastaviVnos_buttonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(podatki_LABEL)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(Priimek_op)
.addComponent(PotniList_op)
.addComponent(Naslov_op)
.addComponent(Ime_op)
.addComponent(elPosta_op)
.addComponent(kraj_op)
.addComponent(Spol))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(priimek_field)
.addComponent(naslov_field)
.addComponent(potniList_field)
.addComponent(kraj_field)
.addGroup(layout.createSequentialGroup()
.addComponent(spol_m)
.addGap(18, 18, 18)
.addComponent(spol_z))
.addComponent(ime_field, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 251, Short.MAX_VALUE)
.addComponent(elPosta_field, javax.swing.GroupLayout.Alignment.TRAILING))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGap(107, 107, 107)
.addComponent(ponastaviVnos_button, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(podatki_LABEL)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Ime_op)
.addComponent(ime_field, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, 0)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Priimek_op)
.addComponent(priimek_field, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, 0)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Spol)
.addComponent(spol_m)
.addComponent(spol_z))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(potniList_field, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(PotniList_op))
.addGap(0, 0, 0)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(naslov_field, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Naslov_op))
.addGap(0, 0, 0)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(kraj_field, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(kraj_op))
.addGap(0, 0, 0)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(elPosta_field, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(elPosta_op))
.addGap(75, 75, 75)
.addComponent(ponastaviVnos_button, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(183, Short.MAX_VALUE))
);
}// </editor-fold>
private void ime_fieldKeyTyped(java.awt.event.KeyEvent evt) {
m.preveriVnos(ime_field, evt);
}
private void priimek_fieldKeyTyped(java.awt.event.KeyEvent evt) {
m.preveriVnos(priimek_field, evt);
}
private void kraj_fieldKeyTyped(java.awt.event.KeyEvent evt) {
m.preveriVnos(kraj_field, evt);
}
private void ponastaviVnos_buttonActionPerformed(java.awt.event.ActionEvent evt) {
m.ponastaviVnosPodatkiOStranki(ime_field, priimek_field, potniList_field, naslov_field, elPosta_field, kraj_field, spol_buttonGroup);
}
// Variables declaration - do not modify
private javax.swing.JLabel Ime_op;
private javax.swing.JLabel Naslov_op;
private javax.swing.JLabel PotniList_op;
private javax.swing.JLabel Priimek_op;
private javax.swing.JLabel Spol;
private javax.swing.JTextField elPosta_field;
private javax.swing.JLabel elPosta_op;
private javax.swing.JTextField ime_field;
private javax.swing.JTextField kraj_field;
private javax.swing.JLabel kraj_op;
private javax.swing.JTextField naslov_field;
private javax.swing.JLabel podatki_LABEL;
private javax.swing.JButton ponastaviVnos_button;
private javax.swing.JTextField potniList_field;
private javax.swing.JTextField priimek_field;
private javax.swing.ButtonGroup spol_buttonGroup;
private javax.swing.JRadioButton spol_m;
private javax.swing.JRadioButton spol_z;
// End of variables declaration
}
This depends a lot on how you declare and use your variables.
For the second part, if you have a reference to the tab you can iterate over its child component (been long, but i think the method could be getComponents()) and check if each is of type JTextField.
Well based on your custom jpanels:
You would probably define a method there:
public void getContent() { String text = naslov_field.getText(); text += kraj_field.getText(); }
Instead of
private void dodajOsebo_buttonActionPerformed(java.awt.event.ActionEvent evt) {
int tabNum = OsebniPodatki_TabbedPane.getTabCount() + 1; OsebniPodatki_TabbedPane.addTab("Oseba " + tabNum, new PodatkiOStranki()); PodatkiOPotovanju_TabbedPane.addTab("Oseba " + tabNum, new PodrobnostiPotovanja());
}
Declare the jpanels as variables.
//variable decl
PodrobnostiPotovanja currentAddePodronPanel;
PodatkiOStranki currentAddedPodatPanel;
private void dodajOsebo_buttonActionPerformed(java.awt.event.ActionEvent evt) {
int tabNum = OsebniPodatki_TabbedPane.getTabCount() + 1;
currentAddedPodatPanel = new PodatkiOStranki();
currentAddePodronPanel = new PodrobnostiPotovanja();
OsebniPodatki_TabbedPane.addTab("Oseba " + tabNum, currentAddedPodatPanel);
PodatkiOPotovanju_TabbedPane.addTab("Oseba " + tabNum, currentAddePodronPanel);
}
Assuming you have a button to get text from jpanel:
public void saveText(ActionEvent event){
String content = currentAddedPodatPanel.getContent();
//etc
}
Note on formatting: from jtextfield, you would have to do that on your own. Otherwise have a look at jtextarea with document (a little tedious) or JTextPane or JEditorPane The really big index
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.