Hallo,
ich weiß nicht mal, ob mein vorhaben möglich ist oder nicht..
Wenn ich eine neue Hauptkategorie anlege, öffnet sich ein JDialog mit der passenden Tittelzeile und den passenden Komponenten, lege ich eine Unterkategorie an, passiert das ebenfalls.. Aber es ist der gleiche JDialog. Das funktioniert auch. Aber nun soll es folgendermaßen ablaufen. Wenn ich eine Hauptkategorie anlege, dann soll danach direkt eine Unterkategorie in dieser Hauptkategorie erstellt werden.
Ich habe schon vieles ausprobiert mit repaint oder validate. Nix hat geklappt..
Der JDialog müsste sich sogesehen komplett neu zeichnen, habe ein boolean drin der bei true eine Hauptkategorie anlegt und bei false eine Unterkategorie.
Ich hoffe hier könnt mir helfen, den Code von dem Dialog füge ich bei.
ich weiß nicht mal, ob mein vorhaben möglich ist oder nicht..
Wenn ich eine neue Hauptkategorie anlege, öffnet sich ein JDialog mit der passenden Tittelzeile und den passenden Komponenten, lege ich eine Unterkategorie an, passiert das ebenfalls.. Aber es ist der gleiche JDialog. Das funktioniert auch. Aber nun soll es folgendermaßen ablaufen. Wenn ich eine Hauptkategorie anlege, dann soll danach direkt eine Unterkategorie in dieser Hauptkategorie erstellt werden.
Ich habe schon vieles ausprobiert mit repaint oder validate. Nix hat geklappt..
Der JDialog müsste sich sogesehen komplett neu zeichnen, habe ein boolean drin der bei true eine Hauptkategorie anlegt und bei false eine Unterkategorie.
Ich hoffe hier könnt mir helfen, den Code von dem Dialog füge ich bei.
Java:
public class CategoryInsertDialog extends JDialog implements ActionListener {
private JTextField tfDescription;
private JComboBox cbColors;
private JComboBox cbMainCats;
private Config config = Config.getInstance();
private MainCatManagement mainCatManagement = MainCatManagement.getInstance();
private ApplikationManagement appManagement = ApplikationManagement.getInstance();
private HashMap<String, NamedColor> mapOfColors = null;
private boolean isMainCat = false;
private JButton btnSave;
private JButton btnCancel;
public CategoryInsertDialog(boolean mainCat){
this.isMainCat = mainCat;
init();
if(mainCat){
this.setTitle("Neue Hauptkategorie anlegen");
}else{
this.setTitle("Neue Unterkategorie anlegen");
}
}
private void init(){
this.setVisible(false);
this.setAlwaysOnTop(true);
this.setResizable(false);
this.setLayout(new GridBagLayout());
this.setModal(true);
GridBagConstraints gbc;
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.anchor = GridBagConstraints.LINE_START;
this.add(new JLabel("Bezeichnung:"), gbc);
gbc = new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 0;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.weightx = 2.0;
gbc.anchor = GridBagConstraints.LINE_START;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(10, 10, 10, 0);
tfDescription = new JTextField();
this.add(tfDescription, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.anchor = GridBagConstraints.LINE_START;
if(isMainCat)
this.add(new JLabel("Farbe:"), gbc);
else
this.add(new JLabel("Hauptkategorie:"), gbc);
gbc = new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 1;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.weightx = 2.0;
gbc.anchor = GridBagConstraints.LINE_START;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(10, 10, 10, 0);
if(isMainCat){
cbColors = new JComboBox();
getContentForComboBox();
this.add(cbColors, gbc);
}else{
cbMainCats = new JComboBox(mainCatManagement.filteredListByApp(appManagement.getSelectedAppInNewApp()).toArray());
cbMainCats.addItem("Alle");
cbMainCats.setRenderer(new MainCategoryRenderer());
this.add(cbMainCats, gbc);
}
gbc = new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 2;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.weightx = 2.0;
gbc.anchor = GridBagConstraints.LINE_END;
JPanel pnlButtons = new JPanel();
btnSave = new JButton("Speichern");
btnSave.addActionListener(this);
btnCancel = new JButton("Abbrechen");
btnCancel.addActionListener(this);
pnlButtons.add(btnSave);
pnlButtons.add(btnCancel);
this.add(pnlButtons, gbc);
pack();
this.setLocationRelativeTo(null);
}
/**
* Füllt die ComboBox mit den
* Namen der auswählbaren Farben
*/
private void getContentForComboBox(){
mapOfColors = config.getNamedColors();
Set<String> keys = mapOfColors.keySet();
Iterator<String> it = keys.iterator();
while(it.hasNext()){
String key = it.next();
cbColors.addItem( mapOfColors.get(key).toString());
}
}
class MainCategoryRenderer extends JLabel implements ListCellRenderer {
public MainCategoryRenderer(){
this.setOpaque(true);
}
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
if (isSelected) {
this.setBackground(list.getSelectionBackground());
this.setForeground(list.getSelectionForeground());
} else {
this.setBackground(list.getBackground());
this.setForeground(list.getForeground());
}
this.setText(((MainCategory)value).getDescription());
return this;
}
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnSave){
do_btnSave_actionPerformed(e);
}
else if(e.getSource() == btnCancel){
do_btnCancel_actionPerformed(e);
}
}
protected void do_btnSave_actionPerformed(ActionEvent e){
if(isMainCat){
int app_id = appManagement.getSelectedAppInNewApp().getCode();
mainCatManagement.create(new MainCategory(-1,
app_id, mainCatManagement.getNextLfdNr(app_id),
tfDescription.getText(),
mapOfColors.get(cbColors.getSelectedItem().toString()).toString()));
}else{
MainCategory mainCat = (MainCategory) cbMainCats.getSelectedItem();
System.out.println(mainCat.getId());
}
}
protected void do_btnCancel_actionPerformed(ActionEvent e){
this.dispose();
}