Ich möchte eine Suchleiste in Java, aber nach jedem Schlüssel Release-Ereignis möchte ich Vorschlag als Google-Suchleiste nach jedem Schlüsselereignis aber in der Tabelle, weil ich zwei Spalten aus der Datenbank als Vorschläge anzeigen möchte. Es gibt viele Lösungen mit Combo-Box, aber ich möchte Tabelle als Pop-Down, um Vorschläge zu zeigen.Wie erstellt man eine Dropdown-Tabelle für die Suchleiste?
-1
A
Antwort
1
Es gibt viele Lösungen mit Combo-Box, aber ich möchte Tabelle als Pop-Down, um Vorschläge zu zeigen.
Sie sind ein Kombinationsfeld, das zwei Datenspalten anzeigt. Zum Beispiel:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.text.*;
public class ComboBoxMultiColumn extends JFrame
{
public ComboBoxMultiColumn()
{
getContentPane().setLayout(new GridLayout(0, 2));
Vector items = new Vector();
items.addElement(new Item("123456789", "Car"));
items.addElement(new Item("23", "Plane"));
items.addElement(new Item("345", "Train"));
items.addElement(new Item("4567", "Nuclear Submarine"));
// Use a JTextArea as a renderer
JComboBox comboBox1 = new JComboBox(items);
comboBox1.setRenderer(new TextAreaRenderer(5));
getContentPane().add(new JLabel("TextArea Renderer"));
getContentPane().add(comboBox1);
// Use a JTextPane as a renderer
JComboBox comboBox2 = new JComboBox(items);
comboBox2.setRenderer(new TextPaneRenderer(10));
getContentPane().add(new JLabel("TextPane Renderer"));
getContentPane().add(comboBox2);
// Use a JPanel as a renderer
JComboBox comboBox3 = new JComboBox(items);
comboBox3.setRenderer(new PanelRenderer(50));
getContentPane().add(new JLabel("Panel Renderer"));
getContentPane().add(comboBox3);
// Using HTML
JComboBox comboBox4 = new JComboBox(items);
comboBox4.setRenderer(new HTMLRenderer());
getContentPane().add(new JLabel("HTML Renderer"));
getContentPane().add(comboBox4);
}
class Item
{
private String id;
private String description;
public Item(String id, String description)
{
this.id = id;
this.description = description;
}
public String getId()
{
return id;
}
public String getDescription()
{
return description;
}
public String toString()
{
return description;
}
}
public static void main(String[] args)
{
JFrame frame = new ComboBoxMultiColumn();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
/*
** Tabs are easier to use in a JTextArea, but not very flexible
*/
class TextAreaRenderer extends JTextArea implements ListCellRenderer
{
public TextAreaRenderer(int tabSize)
{
setTabSize(tabSize);
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus)
{
Item item = (Item)value;
setText(item.getId() + "\t" + item.getDescription());
setBackground(isSelected ? list.getSelectionBackground() : null);
setForeground(isSelected ? list.getSelectionForeground() : null);
return this;
}
}
/*
** Tabs are harder to use in a JTextPane, but much more flexible
*/
class TextPaneRenderer extends JTextPane implements ListCellRenderer
{
public TextPaneRenderer(int tabColumn)
{
setMargin(new Insets(0, 0, 0, 0));
FontMetrics fm = getFontMetrics(getFont());
int width = fm.charWidth('w') * tabColumn;
TabStop[] tabs = new TabStop[1];
tabs[0] = new TabStop(width, TabStop.ALIGN_LEFT, TabStop.LEAD_NONE);
TabSet tabSet = new TabSet(tabs);
SimpleAttributeSet attributes = new SimpleAttributeSet();
StyleConstants.setTabSet(attributes, tabSet);
getStyledDocument().setParagraphAttributes(0, 0, attributes, false);
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus)
{
Item item = (Item)value;
if (index == -1)
setText(item.getDescription());
else
setText(item.getId() + "\t" + item.getDescription());
setBackground(isSelected ? list.getSelectionBackground() : null);
setForeground(isSelected ? list.getSelectionForeground() : null);
return this;
}
}
/*
** Use a panel to hold multiple components
*/
class PanelRenderer implements ListCellRenderer
{
private JPanel renderer;
private JLabel first;
private JLabel second;
public PanelRenderer(int firstColumnWidth)
{
renderer = new JPanel();
renderer.setLayout(new BoxLayout(renderer, BoxLayout.X_AXIS));
first = new JLabel(" ");
Dimension d = first.getPreferredSize();
d.width = firstColumnWidth;
first.setMaximumSize(d);
second = new JLabel();
renderer.add(first);
renderer.add(second);
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus)
{
Item item = (Item)value;
first.setText(item.getId());
second.setText(item.getDescription());
renderer.setBackground(isSelected ? list.getSelectionBackground() : null);
renderer.setForeground(isSelected ? list.getSelectionForeground() : null);
return renderer;
}
}
/*
** Use HTML to format the text
*/
class HTMLRenderer extends DefaultListCellRenderer
{
private static final String START = "<html><table><tr><td width=40>";
private static final String MIDDLE = "</td><td width=120>";
private static final String END = "</td></tr></table></html>";
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus)
{
super.getListCellRendererComponent(
list, value, index, isSelected, cellHasFocus);
Item item = (Item)value;
setText(START
+ item.getId()
+ MIDDLE
+ item.getDescription()
+ END);
return this;
}
}
}
+0
zu zeigen, ich möchte auch überschriften der tabelle anzeigen !! –
Verwandte Themen
- 1. Wie man die Suchleiste in der Navigationsleiste hinzufügt und ein Aktionsblatt erstellt, indem man auf die Suchleiste klickt
- 2. Wie man eine Suchleiste hat, die Vorschläge mit anderen uitableview
- 3. Wie wird die Suchleiste im Menü "Folie" erstellt?
- 4. Wie erstellt man eine Quellkarte für WebPack?
- 5. Wie erstellt man eine Toolbar für IE?
- 6. Suchleiste, die mit React erstellt wurde, die Firebase abfragt
- 7. Wie erstellt man eine professionelle Hilfe für die Website?
- 8. Wie erstellt man eine Schrittdefinition für die dynamische Dateneingabe?
- 9. Wie erstellt man eine Regex, die für mehrere Fälle funktioniert
- 10. Wie erstellt man eine Lösung für die 64-Bit-Zielumgebung?
- 11. Wie erstellt man eine Verbindung für die Schleife in C++?
- 12. Wie vergrößere ich die Suchleiste?
- 13. Wie verschiebt man die Suchleiste nach oben auf die Seite?
- 14. Wie erstellt man eine Polymerkomponentenbibliothek?
- 15. Wie erstellt man eine Binärdatei
- 16. Wie erstellt man eine Template Instanziierung für eine abstrakte Basisklasse?
- 17. Wie erstellt man eine Methode für eine Array-Klasse?
- 18. Wie erstellt man eine Verknüpfung für eine Registerkarte in Console2?
- 19. Wie erstellt man eine Update-Schaltfläche für eine Datenbank?
- 20. Wie erstellt man eine Konstruktorfunktion?
- 21. Wie erstellt man eine Metaklasse?
- 22. Wie erstellt man eine Projektvorlage
- 23. Suchleiste für Android-App
- 24. Wie erstellt man eine REST-API für eine Ruby-Anwendung?
- 25. Wie ändert man die Farbe des Daumens in der Suchleiste?
- 26. Wie man Opencart Suchleiste als Autocomplete machen?
- 27. Wie erstellt man eine Menüleiste, die eine App startet?
- 28. Wie erstellt man eine Hauptmenüfunktion, die eine Anweisung enthält?
- 29. Wie erstellt man eine Animation wie diese?
- 30. Wie erstellt man eine Anpassung, die die automatischen Eigenschaften für eine ganze Reihe von Typen auslässt?
[Vielleicht Beispiel] (http://stackoverflow.com/questions/14974228/java-swing-multi-column-autocomplete-combobox) – MadProgrammer
@MadProgrammer in es ist das Problem, wie zum Abrufen Daten aus der Datenbank und zeigen Sie in der Tabelle –
Das an sich ist ein häufiges Problem, das mehrfach beantwortet wurde. Ihr Problem ist eigentlich zweifach: 1- Holen Sie sich Daten aus der Datenbank; 2- Repräsentiere/aktualisiere Daten in einer 'JTable', wenn du beide Dinge einzeln machen kannst, dann kannst du beides zusammen machen – MadProgrammer