title image


Smiley Re: Jave - in Scroll Pane dynamisch JComboBox hinzufügen
Hi!



Das ist eigentlich nicht weiter schwierig...wenn ich dich denn richtig verstehe! Das unten ist ein ganz schnell zusammengeschustertes Beispiel ohne Rücksicht auf ordentlichen Programmierstil, aber ich hab im Moment net viel Zeit (aber ich konnte mich ein wenig von der richtigen Arbeit ablenken :-) )



Du steckst einfach ein JPanel das eine Methode hat "addNewComboBox" in dein JScrollPane. In dieser addest du einfach immer eine neue ComboBox. Nach einem panel.revalidate() und panel.repaint() hast du sie auf dem Bildschirm. Entschuldige die schreckliche Formatierung des Beispiels.



Noch ein Kommentar zu meinem Beispiel: es sieht wirklich grottenhässlich aus! Arbeite normalerweise mit dem JGoodies FormLayout und wußte gerade auf Anhieb nicht wie ich die vertikale Anordnung der ComboBoxen im JScrollPane hinbekomme sodass dieses auch scrollt (jetzt werden die einfach gestrecht und gestaucht). BoxLayout + GridLayout haben mir den Gefallen leider net getan! ;-) Mit dem richtigen Layout scrollt es aber 100%ig!



MfG, DaBoo



import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;



import javax.swing.Box;

import javax.swing.BoxLayout;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;



public class DynamicComboBoxes extends JFrame {

private CbPanel panel = new CbPanel();

private JTable table = new JTable(new DefaultTableModel(new Object[] {"Day"}, 0));



/**

*

* @param title

*/

public DynamicComboBoxes(String title) {

super(title);

this.setLayout(new GridLayout(0, 2));



this.panel.addNewComboBox();

this.add(new JScrollPane(panel));



this.add(new JScrollPane(this.table));



this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setSize(300, 400);

this.setVisible(true);

}



/**

*

* @param args

*/

public static void main(String[] args) {

new DynamicComboBoxes("Dynamic ComboBoxes");

}



/**

*

*/

class CbPanel extends JPanel {

public CbPanel() {

this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

}



public void addNewComboBox() {

JComboBox cb = new JComboBox(

new Object[] {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"});

cb.addActionListener(new ActionListener() {



public void actionPerformed(ActionEvent evt) {

// neue ComboBox hinzufügen

((JComboBox) evt.getSource()).setEnabled(false);

panel.add(Box.createHorizontalStrut(10));

panel.addNewComboBox();

panel.revalidate();

panel.repaint();



// Eintrag in Tabelle einfügen

DefaultTableModel model = (DefaultTableModel) table.getModel();

model.addRow(new Object[] {((JComboBox) evt.getSource()).getSelectedItem()});

}



});

this.add(cb);

}

}

}



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: