implemented scrollbar with search results with error message if none are found

gui
David Groys 2024-06-15 16:34:36 +02:00
parent 5eaff1161b
commit 1a45bc23ec
1 changed files with 68 additions and 26 deletions

View File

@ -59,7 +59,7 @@ public class Main extends JFrame {
private JButton changePasswordButton;
private JButton changeDetailsButton;
private JButton logOutButton;
private JScrollPane jsp = new JScrollPane();
private JScrollPane jsp;
private JPanel destinationButtons = new JPanel();
private JPanel changePassword;
@ -154,7 +154,6 @@ public class Main extends JFrame {
logOutButtonCreate();
changeDetailsButtonCreate();
changePasswordButtonCreate();
jsp.add(destinationButtons);
menuLabel.setBounds(180, -125, 300, 300);
searchPLZ_ORT.setBounds(20, 50, 300, 100);
searchConfirmButton.setBounds(346, 70, 110, 30);
@ -163,7 +162,6 @@ public class Main extends JFrame {
logOutButton.setBounds(340, 430, 130, 30);
changeDetailsButton.setBounds(340, 398, 130, 30);
changePasswordButton.setBounds(340, 366, 130, 30);
jsp.setBounds(50,50,300,400);
menu.add(menuLabel);
menu.add(searchPLZ_ORT);
@ -522,35 +520,73 @@ public class Main extends JFrame {
@Override
public void actionPerformed(ActionEvent e) {
ArrayList<String> orte = facade.search(getTextfieldContent(searchPLZ_ORT, "ortSuche"));
JPanel destinationButtonsProxy = new JPanel(new FlowLayout());
for(String s : orte){
String[] ortUndPLZ = s.split(";");
String address = ortUndPLZ[1] + ", " + ortUndPLZ[0];
JButton jb = new JButton(address);
jb.setSize(100,20);
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFrame jf = new JFrame();
JPanel jp = new JPanel(new FlowLayout());
String[] details = facade.destination_details(ortUndPLZ[0]);
for(String ss : details) {
JLabel jl = new JLabel(ss);
jp.add(jl);
JPanel destinationButtonsProxy = new JPanel();
destinationButtonsProxy.setLayout(new BoxLayout(destinationButtonsProxy, BoxLayout.Y_AXIS));
if (orte.size() > 0) {
for (String s : orte) {
String[] ortUndPLZ = s.split(";");
String plz = ortUndPLZ[0];
String address = ortUndPLZ[1] + "," + plz + " " + facade.distance(plz);
JButton jb = new JButton(address);
jb.setPreferredSize(new Dimension(290, 40));
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFrame jf = new JFrame();
JPanel jp = new JPanel(new FlowLayout());
String[] details = facade.destination_details(plz);
for (String ss : details) {
JLabel jl = new JLabel(ss);
jp.add(jl);
}
jf.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jf.add(jp);
jf.setSize(100, 400);
jf.setVisible(true);
}
jf.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jf.add(jp);
jf.setSize(100,400);
}
});
//erzeuge aus adresse einen Button
});
destinationButtonsProxy.add(jb);
}
destinationButtons = destinationButtonsProxy;
destinationButtons.revalidate();
destinationButtons.repaint();
try {
menu.remove(jsp);
} catch (Exception jspNotYetIncluded) {
}
jsp = new JScrollPane(destinationButtons);
jsp.setBounds(40, 110, 244, 336);
jsp.revalidate();
jsp.repaint();
menu.add(jsp);
menu.revalidate();
menu.repaint();
}
else {
destinationButtonsProxy = new JPanel();
JLabel jl = new JLabel("Kein Ergebnis");
jl.setFont(new Font("Arial", Font.PLAIN, 38));
destinationButtonsProxy.add(jl);
destinationButtons = destinationButtonsProxy;
destinationButtons.revalidate();
destinationButtons.repaint();
try {
menu.remove(jsp);
} catch (Exception jspNotYetIncluded) {
}
jsp = new JScrollPane(destinationButtons);
jsp.setBounds(40, 110, 244, 336);
jsp.revalidate();
jsp.repaint();
menu.add(jsp);
menu.revalidate();
menu.repaint();
}
destinationButtons = destinationButtonsProxy;
menu.revalidate();
}
});
}
private void randDestinationsCarButtonCreate() { //Auto Icon hinzufügen
randDestinationsCarButton = new JButton();
randDestinationsCarButton.setPreferredSize(new Dimension(150, 80));
@ -807,6 +843,12 @@ public class Main extends JFrame {
});
}
public void jspCreate(){
jsp = new JScrollPane();
jsp.setSize(100,100);
}
private String getTextfieldContent(JPanel panel, String name) {
for (Component component : panel.getComponents()) {
if (component instanceof JTextField && name.equals(component.getName())) {