daisho
VereinsmitgliedSHODAN
|
Es ist eigentlich nicht mein Stil so etwas anzufragen da ich das lieber selbst nachschaue, aber ich habe jetzt schon ein paar Stunden verschi..en nur um eine minimale GUI hinzubringen. Ich seh mich bei objektorientierter Programmierung nur wenig raus (und die letzten Versuche sind einige Zeit her) und Java scheint da einige verschiedene Möglichkeiten zu geben wie man das löst!? Ich bräuchte eigentlich nur ein kleines Programm (nicht Applet), das mir (am besten vertikal sortiert) ein paar Dropdown-Boxen (JComboBox) und CheckBoxen (mit Text daneben) auf einem kleinen Frame ausgibt. Die Auswahlen (sowohl ComboBox und CheckBox) sollten dann bestimmten Zahlen zugeordnet sein (int) welche am Ende zu einem Ergebnis zusammengerechnet werden (das natürlich angezeigt werden soll ). Das ganze vertikal geordnet und mittig. Also ganz blöd ausgedrückt: JComboBox1: Katze (entspricht der Zahl 1) Hund (entspricht der Zahl 2) Papagei (entspricht der Zahl 3) etc. JComboBox2: Quadrat (entspricht der Zahl 7) Kreis (entspricht der Zahl 8) Dreieck (entspricht der Zahl 9) CheckBox1: (entspricht der Zahl 11) [ ] Schoko CHeckBox2: (entspricht der Zahl 12) [ ] Erdbeer Ergebnis: (entspricht Zahl_aus_ComboBox1 + Zahl_aus_ComboBox2 - Zahl_aus_CheckBox1 + Zahl_aus_CheckBox2) Als BeispielDie ganzen genaueren Details, Werte, wie viele Boxen, Rechnung etc. kann ich eh selbst schreiben, mir fehlt nur irgendwie eine Art Grundgerüst und werde aus den ganzen Beispielen nur bedingt schlau (bzw. kostet mich das einfach zuviel Zeit ), ein passionierter Java-Coder hat das vermutlich in 1 min.
|
Gegi
Here to stay
|
|
Denne
Here to stay
|
bin zwar kein java-profi, aber ich glaube, ich würde es so machen. - Frame mit einem Gridlayout, welches 4 Zeilen und eine Spalte hat - in Zeile 1 die ComboBox 1, in Zeile 2 die ComboBox 2, in Zeile 3 die beiden Chechboxen und in der 4ten Zeile ein JText mit dem Ergebnis der Zahlen - zu den ersten 3 Zeilen jeweils actionlistener hinzufügen, die die Zahlen einfach auf einen int-wert aufaddieren. - das ergebnis wird dann von dem JText benutzt afaik sollte es so klappen Bin leider nicht sooo fit mit GUI's, aber wenns kein anderer geschwind machen kann/will, werde ich mich dran versuchen.
|
Burschi1620
24/7 Santa Claus
|
Netbeans hat iirc einen GUI Builder dabei. Damit sollte das relativ fix gehen und man muss sich fast nicht um Sachen wie Layout oder so kümmern.
|
Denne
Here to stay
|
Ich probiers grad mal, gib mir 1-2 Stunden
|
daisho
VereinsmitgliedSHODAN
|
Das mit Netbeans muss ich mir mal anschauen, im Moment verwende ich Eclipse. Aber jetzt gehts mal ab zur Grillfeier (da komm ich eher nicht dazu ). @Denne: Nicht dass du dir da 1-2h Arbeit antust, dachte eher daran falls das in 1-2 Minuten erledigt wäre dann könnte es jemand schnell hinbiegen (ansonsten muss ich mich eh selbst drum kümmern)
|
Denne
Here to stay
|
Müsste eh bissl üben für die Uni, von daher kommts vllt ganz gut btw: hab ich es richtig verstanden, bei den ersten 2 JComboBoxen kann man alles auswählen und bei der letzten Checkbox nur eins von den beiden?
|
that
Hoffnungsloser Optimist
|
und bei der letzten Checkbox nur eins von den beiden? Checkboxen sind üblicherweise unabhängig voneinander, sonst wären es Radiobuttons.
|
Denne
Here to stay
|
Ja, das war sozusagen meine Frage, ob er nicht Radiobuttons meint. Also kann man generell alles auswählen? (damit ich es richtig verstehe ) edit: okay, stand aufm schlauch, habs nun geschnallt edit2: Hab nun mal die GUI ohne Actionlistener gebastelt. Man müsste diese also nur noch hinzufügen, was nicht all zu schwer sein sollte. Bild: ist es so, wie du es dir vorstellst? Wenns so passt, kann ich die actionlistener hinzufügen und dir dann den quellcode schicken, oder aber du willst die actionlistener hinzufügen (mir egal). Quellcode ist auch sehr simpel gehalten, eh nur eine kleine Klasse. Sag dann grad Bescheid. edit3: So, Programm ist fertig. Zwar nicht der schönste Quelltext, aber ich hoffe, du findest dich zurecht, ist nicht so schwer Wenn was net stimmen sollte oder du was nicht verstehst, ich werde hier noch mitlesen. import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JComboBox;
import javax.swing.JSeparator;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class ComboBox extends JFrame implements ActionListener{
// Fenstergröße
private static final int height = 350;
private static final int width = 210;
// Beide CheckBox-Optionen
private JCheckBox schoko, erdbeer;
// Text
private JLabel text;
// ComboBoxen
private JComboBox eins, zwei;
// Int Endergebniswert
private int ergebnis = 0;
// Int Zwischenwerte
private int comboeins = 0;
private int combozwei = 0;
private int checkeins = 0;
private int checkzwei = 0;
public void actionPerformed(ActionEvent e){
// leer
}
// Fenster
ComboBox(){
// Frame wird mit Namen erzeugt
super("Auswahmenü");
setSize(width, height);
// neues Layout wird erstellt
Container pane = getContentPane();
pane.setLayout(new GridLayout(12,1));
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
// erste ComboBox
pane.add(new JLabel("ComboBox Eins"));
String[] tiere = {"Katze", "Hund", "Papagei", "bitte auswählen"};
JComboBox eins = new JComboBox(tiere);
eins.setSelectedIndex(3);
pane.add(eins);
// Actionevent
eins.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
JComboBox auswahleins = (JComboBox)e.getSource();
if(auswahleins.getSelectedItem().equals("Katze")) {
comboeins = 1;
summe();
text.setText(("Ergebnis: " + ergebnis));
} else if(auswahleins.getSelectedItem().equals("Hund")) {
comboeins = 2;
summe();
text.setText(("Ergebnis: " + ergebnis));
} else if(auswahleins.getSelectedItem().equals("Papagei")) {
comboeins = 3;
summe();
text.setText(("Ergebnis: " + ergebnis));
} else {
comboeins = 0;
summe();
text.setText(("Ergebnis: " + ergebnis));
}
}
});
// Trennlinie
JSeparator separatoreins = new JSeparator();
pane.add(separatoreins);
// zweite ComboBox
pane.add(new JLabel("ComboBox Zwei: Bitte auswählen"));
String[] formen = {"Quadrat", "Kreis", "Dreieck", "bitte auswählen"};
JComboBox zwei = new JComboBox(formen);
zwei.setSelectedIndex(3);
pane.add(zwei);
// Actionevent
zwei.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
JComboBox auswahlzwei = (JComboBox)e.getSource();
if(auswahlzwei.getSelectedItem().equals("Quadrat")) {
combozwei = 7;
summe();
text.setText(("Ergebnis: " + ergebnis));
} else if(auswahlzwei.getSelectedItem().equals("Kreis")) {
combozwei = 8;
summe();
text.setText(("Ergebnis: " + ergebnis));
} else if(auswahlzwei.getSelectedItem().equals("Dreieck")) {
combozwei = 9;
summe();
text.setText(("Ergebnis: " + ergebnis));
} else {
combozwei = 0;
summe();
text.setText(("Ergebnis: " + ergebnis));
}
}
});
// Trennlinie
JSeparator separatorzwei = new JSeparator();
pane.add(separatorzwei);
// CheckBox Schoko
pane.add(new JLabel("CheckBox: Bitte auswählen"));
schoko = new JCheckBox ("Schoko");
//Actionevent
ItemListener schokoevent = new ItemListener() {
public void itemStateChanged (ItemEvent e) {
JCheckBox schoko = (JCheckBox)e.getItemSelectable();
if (schoko.isSelected()) {
checkeins = 11;
summe();
text.setText(("Ergebnis: " + ergebnis));
} else {
checkeins = 0;
summe();
text.setText(("Ergebnis: " + ergebnis));
}
}
};
schoko.addItemListener(schokoevent);
pane.add(schoko);
//Checkbox Erdbeer
erdbeer = new JCheckBox ("Erdbeer");
// Actionevent
ItemListener erdbeerevent = new ItemListener() {
public void itemStateChanged (ItemEvent e) {
JCheckBox erdbeer = (JCheckBox)e.getItemSelectable();
if (erdbeer.isSelected()) {
checkzwei = 12;
summe();
text.setText(("Ergebnis: " + ergebnis));
} else {
checkzwei = 0;
summe();
text.setText(("Ergebnis: " + ergebnis));
}
}
};
erdbeer.addItemListener(erdbeerevent);
pane.add(erdbeer);
//Trennlinie
JSeparator separatordrei = new JSeparator();
pane.add(separatordrei);
// Text (welches das Ergebnis enthält
text = new JLabel("Ergebnis: " + ergebnis);
pane.add(text);
}
// Methode, die aus allen ausgewählten Objekten die Summe erzeugt
public void summe () {
ergebnis = comboeins + combozwei + checkeins + checkzwei;
}
/**
* @param args
*/
public static void main(String[] args) {
new ComboBox().setVisible(true);
}
}
Gruß Denne
Bearbeitet von Denne am 25.04.2010, 18:47
|
daisho
VereinsmitgliedSHODAN
|
Danke, sieht schonmal recht gut aus, da ist alles dabei was ich brauche. Um den Rest und Formatierung kümmere ich mich eh selbst
|
Denne
Here to stay
|
viel Spaß damit Falls noch was sein sollte -> Pm
|