Ich habe eine JFrame
in denen gibt es 2 Textfelder und 1 JButton
. Benutzer müssen eine Zeichenfolge in das Textfeld eingeben. Wenn der Benutzer auf die Schaltfläche im JFrame klickt, werden diese Zeichenfolgen in einer JTable
angezeigt. Ich bekomme nicht den Code, den ich mit einem Klick schreiben soll. Bitte hilf mir.Ereignis mit der Schaltfläche klicken
Antwort
Betrachten Sie die Methode void addActionListener(ActionListener l)
. Das Javadoc der spezifischen Klasse hilft oft auch: Java API
Sie müssen ActionListener zu der Schaltfläche hinzufügen. Versuchen Sie, auf Google zu suchen. für jetzt können Sie in diesen Link schauen Jbutton example
Ihre Beschreibung ist ein bisschen zu vage für eine gute Antwort, aber ich vermute, der Schritt, den Sie vermissen, ist das Hinzufügen eines Aktion Listener auf die Schaltfläche. Dies wird z.B. in Sun's Swing tutorials. Ich persönlich mag es nicht, ihren Stil und bevorzugen anonyme innere Klassen selbst:
myButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
callMyMethod();
}
}
So oder so funktioniert, ich die anonymen inneren Klassen bevorzugen, da sie die Dinge vor Ort zu halten und vermeiden, dass die massiven Switch Methode, die Sie sonst bekommen.
Das wichtige Ding hier "CallMyMethod()". Schreiben Sie die Logik nicht in den Aktionslistener, sondern rufen Sie eine Methode auf, in der Sie Ihre Logik definieren (möglicherweise sogar in einer anderen Controller-Klasse). – Juri
Ich hatte tatsächlich diesen zusätzlichen Kommentar in der ursprünglichen Antwort geschrieben, entschied mich dann aber für die Kürze :-) Vielleicht sollte ich nicht haben. Ich neige dazu, den Inhalt von actionPerformed auf ungefähr eine Zeile herunterzuhalten (eine Zeile in> 90%, die gelegentliche "get X from event, dann ruft die Methode" ein). –
zu Lernzwecken:
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.GroupLayout.Alignment;
import javax.swing.table.AbstractTableModel;
public class NameGUI extends JFrame {
class NamePair {
String firstName;
String lastName;
}
class NameModel extends AbstractTableModel {
List<NamePair> names = new ArrayList<NamePair>();
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "First name";
case 1:
return "Last name";
}
return "";
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public int getRowCount() {
return names.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return names.get(rowIndex).firstName;
case 1:
return names.get(rowIndex).lastName;
}
return null;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
names.get(rowIndex).firstName = String.valueOf(value);
break;
case 1:
names.get(rowIndex).lastName = String.valueOf(value);
break;
}
}
}
JTextField firstName;
JTextField lastName;
JButton addName;
JTable nameTable;
NameModel nameModel;
public NameGUI() {
super("My GUI");
Container c = getContentPane();
GroupLayout gl = new GroupLayout(c);
c.setLayout(gl);
gl.setAutoCreateContainerGaps(true);
gl.setAutoCreateGaps(true);
firstName = new JTextField(20);
lastName = new JTextField(20);
addName = new JButton("Add name");
// MAGIC STARTS *********************
addName.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
onButtonClick();
}
});
// MAGIC ENDS ***********************
nameModel = new NameModel();
nameTable = new JTable(nameModel);
JScrollPane nameTableScroll = new JScrollPane(nameTable);
gl.setHorizontalGroup(
gl.createParallelGroup()
.addGroup(
gl.createSequentialGroup()
.addComponent(firstName)
.addComponent(lastName)
.addComponent(addName)
)
.addComponent(nameTableScroll)
);
gl.setVerticalGroup(
gl.createSequentialGroup()
.addGroup(
gl.createParallelGroup(Alignment.BASELINE)
.addComponent(firstName)
.addComponent(lastName)
.addComponent(addName)
)
.addComponent(nameTableScroll)
);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
pack();
setLocationRelativeTo(null);
}
private void onButtonClick() {
NamePair np = new NamePair();
np.firstName = firstName.getText();
np.lastName = lastName.getText();
nameModel.names.add(np);
nameModel.fireTableDataChanged();
}
/**
* @param args
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new NameGUI().setVisible(true);
}
});
}
}
- 1. Jquery Ajax Anruf klicken Ereignis senden Schaltfläche
- 2. Wie eine Schaltfläche klicken Ereignis Xamarin Android
- 3. hinzufügen Schaltfläche klicken Ereignis in RecyclerView
- 4. Schaltfläche klicken Ereignis nicht geändert wird, wird
- 5. Ereignis auf der Schaltfläche mit Optionsfeld
- 6. jquery - ändern Eingabetext zu versteckten Feld mit Schaltfläche klicken Ereignis
- 7. Eingabe Taste klicken Ereignis
- 8. Benutzersteuerungsknopf klicken Ereignis
- 9. Erkennung der Schaltfläche klicken mit UIAlertView
- 10. Ribbon-Schaltfläche nicht feuern Ereignis von onAction beim Klicken
- 11. Wie eine Bool Funktion auf Schaltfläche klicken Ereignis Call
- 12. Anruf klicken Ereignis einer Schaltfläche Formular eine andere Website
- 13. ASP.NET-Seite Ereignisse - Schaltfläche klicken Ereignis kommt nach Gridview binden
- 14. Xamarin Forms Schaltfläche klicken Ereignis stürzt beim Ausführen
- 15. ASP.NET Schaltfläche klicken Ereignis funktioniert nicht in IE
- 16. Klicken Ereignis in UITableView
- 17. Warum ist meine Backbone View Schaltfläche klicken Ereignis nicht ausgelöst
- 18. UIWebView addSubView UIButton auf die Schaltfläche klicken Ereignis nicht reagiert
- 19. Übergeben Wert von Klasse zu Schaltfläche klicken Ereignis
- 20. Circular Referenz mit Javascript klicken Ereignis
- 21. Anderswo klicken Ereignis?
- 22. Android: Ändern und Begrenzen der Schaltfläche klicken
- 23. Wie löst man ein Click-Ereignis der Eingabedatei von der Schaltfläche klicken in Winkel 2?
- 24. Schaltfläche Klicken für ListViewFragment
- 25. Schaltfläche simulieren klicken
- 26. jQuery.draggable() - Klicken Sie auf Schaltfläche klicken
- 27. Papier-Schaltfläche Hover-Ereignis
- 28. JQuery/JavaScript - klicken Trigger-Taste aus einem anderen Schaltfläche klicken Ereignis
- 29. Anhören der Swift-Schaltfläche Disable-Ereignis
- 30. Highcharts Bild klicken Ereignis
Was Sie bisher bekommen haben? – seth
Noch einmal stellen Sie eine Frage, die im Swing-Tutorial behandelt wird. Sie haben den Link zu diesem Tutorial zahlreiche Tims gegeben. Beginnen Sie mit dem Lesen des Tutorials und veröffentlichen Sie Ihren Code, wenn Sie ein Problem haben. Ich für meinen Teil weiß nicht, ob Ihr Problem damit zusammenhängt, a) auf eine Schaltfläche zu klicken, b) Text aus den Textfeldern abzurufen, c) eine Zeile zur Tabelle hinzuzufügen. Erwarten Sie nicht, dass wir raten, was Sie fragen, und erwarten Sie nicht, dass die Leute Ihnen ständig die Antwort geben – camickr