Hallöle Leute,
Ich erarbeite für mein Programm gerade einen JDialog, mittels dem man einige wichtige Optionen meines Malprogramms einstellen kann. Hier mal der Code der Klasse, die das verwaltet.
Wichtig für den Dialog ist die Unterklasse "OptionsDialogPanel", die alle Buttons, etc. verwaltet.
Vorerst geht es mir mehr um das Aussehen. Dazu benutze ich das GridBagLayout. Und bevor jemand fragt, wieso ich extra Labels hab, anstatt bei meinen ComboBoxen den Text direkt einzubauen - wills einfach so und denke, ich kann dann auch besser das Aussehen verwalten (wo steht der Text, wie groß, etc.). Ich versuche aus den Optionen so ne Art Tabelle zu basteln - links Label, rechts die CheckBox / ComboBox.
Sieht schon gut aus, aber ich will jetzt noch, wie bei einer richtigen Tabelle, die Spalten und Zeilen per hellgrauen Linien trennen. Eine Border für jede Komponente geht auch nicht, ohne dass etwas ungewolltes passiert. Hab einfach mal gegooglet und die JTable gefunden, aber die ist leider nur für Text geeignet, wenn ich es richtig verstanden habe.
Weiß jemand Rat?
Gruß, Thomas
PS: Bevor viel gesucht wird. Die Gestaltung passiert in der Methode initCenterPanel() von der Unterklasse OptionsDialogPanel (und initLastPart()).
Ich erarbeite für mein Programm gerade einen JDialog, mittels dem man einige wichtige Optionen meines Malprogramms einstellen kann. Hier mal der Code der Klasse, die das verwaltet.
Java:
package window;
import internationalization.Languages;
@SuppressWarnings("serial")
public class SettingsDialog{
private JDialog dialog;
private Main main;
public SettingsDialog(Main target){
main = target;
dialog = new JDialog();
dialog.setSize(400, 400);
Main.centerWindow(dialog);
dialog.setContentPane(new OptionsDialogPanel());
}
public void showDialog(){
dialog.setVisible(true);
}
private class OptionsDialogPanel extends JPanel{
JButton buttonOk;
JButton buttonCancel;
JButton buttonActualize;
JCheckBox checkChangeActual;
JComboBox comboLanguages;
JCheckBox checkDisableLeft;
JCheckBox checkDisableLower;
private OptionsDialogPanel(){
super(new BorderLayout());
JPanel centerPanel = new JPanel(new GridBagLayout());
initCenterPanel(centerPanel);
add(centerPanel, BorderLayout.CENTER);
JPanel lowPanel = new JPanel(new GridBagLayout());
initLastPart(lowPanel);
add(lowPanel, BorderLayout.SOUTH);
initSettings();
}
private void initCenterPanel(JPanel target){
JLabel labelLanguages = new JLabel(Languages.get("Language"));
comboLanguages = new JComboBox(Languages.isThere);
JLabel labelDisableLeft = new JLabel(Languages.get("DisableLeftSide"));
checkDisableLeft = new JCheckBox();
JLabel labelDisableLower = new JLabel(Languages.get("DisableLowerSide"));
checkDisableLower = new JCheckBox();
JLabel labelChangeActual = new JLabel(Languages.get("ChangeActual"));
checkChangeActual = new JCheckBox();
//------------------------------------------------------------------
GridBagConstraints cons = new GridBagConstraints();
cons.weightx = 1.0;
cons.insets = new Insets(5, 5, 5, 5);
cons.gridheight = 1;
cons.gridwidth = GridBagConstraints.RELATIVE;
cons.anchor = GridBagConstraints.WEST;
target.add(labelLanguages, cons);
cons.gridwidth = GridBagConstraints.REMAINDER;
target.add(comboLanguages, cons);
target.add(new JLabel(" "), cons);
cons.gridwidth = GridBagConstraints.RELATIVE;
target.add(labelDisableLeft, cons);
cons.gridwidth = GridBagConstraints.REMAINDER;
target.add(checkDisableLeft, cons);
cons.gridwidth = GridBagConstraints.RELATIVE;
target.add(labelDisableLower, cons);
cons.gridwidth = GridBagConstraints.REMAINDER;
target.add(checkDisableLower, cons);
cons.gridwidth = GridBagConstraints.RELATIVE;
target.add(labelChangeActual, cons);
cons.gridwidth = GridBagConstraints.REMAINDER;
target.add(checkChangeActual, cons);
for (int i = 0; i < 5; i++){
target.add(new JLabel(" "), cons);
}
}
private void initLastPart(JPanel target){
buttonOk = new JButton(Languages.get("OK"));
buttonOk.addActionListener(new ActionHandler());
buttonCancel = new JButton(Languages.get("Cancel"));
buttonCancel.addActionListener(new ActionHandler());
buttonActualize = new JButton(Languages.get("Adopt"));
buttonActualize.addActionListener(new ActionHandler());
GridBagConstraints cons = new GridBagConstraints();
cons.gridx = 0;
cons.gridy = 0;
cons.weightx = 1.0;
cons.fill = GridBagConstraints.HORIZONTAL;
target.add(buttonOk, cons);
cons.gridx++;
target.add(buttonCancel, cons);
cons.gridx++;
target.add(buttonActualize, cons);
}
private void initSettings(){
}
}
}
Vorerst geht es mir mehr um das Aussehen. Dazu benutze ich das GridBagLayout. Und bevor jemand fragt, wieso ich extra Labels hab, anstatt bei meinen ComboBoxen den Text direkt einzubauen - wills einfach so und denke, ich kann dann auch besser das Aussehen verwalten (wo steht der Text, wie groß, etc.). Ich versuche aus den Optionen so ne Art Tabelle zu basteln - links Label, rechts die CheckBox / ComboBox.
Sieht schon gut aus, aber ich will jetzt noch, wie bei einer richtigen Tabelle, die Spalten und Zeilen per hellgrauen Linien trennen. Eine Border für jede Komponente geht auch nicht, ohne dass etwas ungewolltes passiert. Hab einfach mal gegooglet und die JTable gefunden, aber die ist leider nur für Text geeignet, wenn ich es richtig verstanden habe.
Weiß jemand Rat?
Gruß, Thomas
PS: Bevor viel gesucht wird. Die Gestaltung passiert in der Methode initCenterPanel() von der Unterklasse OptionsDialogPanel (und initLastPart()).
Zuletzt bearbeitet: