hi zusammen,
ich bin grade dabei java zu lernen, arbeite dazu ein recht dickes buch mit beispielen durch und bin nun an einer stelle wo ich mich frage was denn die "best practice" sei.
der beispielcode bei dem ich grade bin (s.u.) ist recht einfach gehalten: es soll eine tabbed pane mit 3 tabs erstellt werden, die ersten beiden enthalten je ein jlabel und ein jtextfiled, die dritte eine textarea - so weit so gut.
nachdem ich alle vorangegangenen beispiele brav abgetippt und damit herumgespielt habe dachte ich mir das wäre doch mal eine tolle idee den designer von netbeans auzuprobieren in dem man grafische objekte so toll per grag&drop plazieren und ineinander schieben kann - hat auch geklappt bis zu dem punkt den reiter der dritten tab zu beschriften.
als besonderheit soll die dritte tab nicht wie die vorigen einfach beschriftet sein, sondern eine jpane im tabreiter haben welche wiederum ein jalbel und einen jbutton enthält.
das ist von netbeans nicht vorgesehen. also das draggen einer jpane auf den reiter führt dazu das eine neue tab angelegt, und nicht die jpane anstelle der tabbeschriftung eingesetzt wird.
ich hab mich jetzt mind. eine stunde durch alle möglichen propertys des jtabbedpanels geklickt und frage mich langsam
- hab ich was übersehen, respektive wie realisiert man solche "sonderfälle" und
- wer benutzt eigentlich wie häufig diesen designer um grafische anwendungen zu gestalten?
ich bin grade dabei java zu lernen, arbeite dazu ein recht dickes buch mit beispielen durch und bin nun an einer stelle wo ich mich frage was denn die "best practice" sei.
der beispielcode bei dem ich grade bin (s.u.) ist recht einfach gehalten: es soll eine tabbed pane mit 3 tabs erstellt werden, die ersten beiden enthalten je ein jlabel und ein jtextfiled, die dritte eine textarea - so weit so gut.
nachdem ich alle vorangegangenen beispiele brav abgetippt und damit herumgespielt habe dachte ich mir das wäre doch mal eine tolle idee den designer von netbeans auzuprobieren in dem man grafische objekte so toll per grag&drop plazieren und ineinander schieben kann - hat auch geklappt bis zu dem punkt den reiter der dritten tab zu beschriften.
als besonderheit soll die dritte tab nicht wie die vorigen einfach beschriftet sein, sondern eine jpane im tabreiter haben welche wiederum ein jalbel und einen jbutton enthält.
das ist von netbeans nicht vorgesehen. also das draggen einer jpane auf den reiter führt dazu das eine neue tab angelegt, und nicht die jpane anstelle der tabbeschriftung eingesetzt wird.
ich hab mich jetzt mind. eine stunde durch alle möglichen propertys des jtabbedpanels geklickt und frage mich langsam
- hab ich was übersehen, respektive wie realisiert man solche "sonderfälle" und
- wer benutzt eigentlich wie häufig diesen designer um grafische anwendungen zu gestalten?
Java:
package de.jse6buch.kap21;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
public class JFensterMitRegister extends JFrame
{
public static void main(String[] args)
{
JFensterMitRegister f = new JFensterMitRegister();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public JFensterMitRegister()
{
this.setTitle("Swing-Fenster mit Registerkarten");
this.setBounds(200, 300, 500, 250);
JTabbedPane jTP = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
JPanel jPnl1 = new JPanel();
jPnl1.add(new JLabel("Name: "));
JTextField jTxt = new JTextField();
jTxt.setPreferredSize(new Dimension(200, 25));
jPnl1.add(jTxt);
// ... weitere Personendaten
jTP.addTab("Person", jPnl1);
JPanel jPnl2 = new JPanel();
jPnl2.add(new JLabel("Gehalt: "));
JTextField jTxt2 = new JTextField();
jTxt2.setPreferredSize(new Dimension(200, 25));
jPnl2.add(jTxt2);
// ... weitere Personaldaten
jTP.addTab("vertrauliche Daten", jPnl2);
// dritte Registerkarte erzeugen
final JTextArea jTA = new JTextArea();
jTP.addTab(null, jTA);
// Panel für Reiter
JPanel jPnlReiter = new JPanel();
JLabel jLbl = new JLabel("Optionale Angaben");
final JCheckBox jCb = new JCheckBox();
jCb.setSelected(true);
jCb.addChangeListener(new ChangeListener()
{
public void stateChanged(ChangeEvent arg0)
{
if(jCb.isSelected())
jTA.setEnabled(true);
else
jTA.setEnabled(false);
}
});
jPnlReiter.add(jLbl,BorderLayout.WEST);
jPnlReiter.add(jCb,BorderLayout.EAST);
jTP.setTabComponentAt(2, jPnlReiter);
this.getContentPane().add(jTP);
}
}