JList items voneinander trennen

  • Themenstarter Themenstarter devil_x
  • Beginndatum Beginndatum
D

devil_x

Gast
Hi,
Ich habe mir eine JList erstellt und dort möchte ich das jedes Item von dem anderen mit einem Strich, wie in einer Tabelle voneinander getrennt ist. Ist dies irgenwie möglich oder muss ich eine Tabelle nehmen?

MFG Devil
 
Das ganze hate ich mir schonmal angeschaut. Aber ich kapier einfach nicht wie ich unter jedes Item einfach nen Strich bekomm. Hättest du einen ansatz oder ähnliches?
 
Dann hast du dir die API aber nicht wirklich durchgelesen 😉
Das ist der Beispielcode aus der der API, etwas ausgedünnt und deinen Strich unten hinzugefügt.
Java:
class MyCellRenderer extends JLabel implements ListCellRenderer {
    public MyCellRenderer() {
        setOpaque(true);
    }

    @Override
	public Component getListCellRendererComponent(final JList list,
                                                  final Object value,
                                                  final int index,
                                                  final boolean isSelected,
                                                  final boolean cellHasFocus) {

        setText(value.toString());
        setBorder(BorderFactory.createMatteBorder(0, 0, 10, 0, Color.RED));

        return this;
    }
}
 
Ok, danke das hat funktioniert.
Nur habe ich gerade noch ein Problem mit meinem TabbedPane. Ich füge dort ein Panel ein, welches die Liste und ein anders Panel beinhaltet, aber warum wird die Liste nicht nach ganz links an den Rand gemacht?
Und wie kann ich die Liste imemr die größe von dem TabbedPane haben lassen?

Java:
package adressbuch;

import java.awt.*;
import javax.swing.*;

/**
 *
 * @author Franz
 */
public class Adressbuch extends JFrame{
    
    String[] items = {"LOISAHN" ,"dog","cunt","bitch","huso"};
    JPopupMenu popmenu;
    JMenuBar menubar;
    JMenu menu;
    JMenuItem exit;
    JList list;
    JPanel kontaktPanel;
    JTabbedPane tabbedPane;
    JPanel displayPanel;
    JLabel name;
    JScrollPane scrollPane;

    private Adressbuch(){
        
        //JItems erstellen
        popmenu = new JPopupMenu();
        menubar = new JMenuBar();
        menu = new JMenu("Einstellungen");
        exit = new JMenuItem("Beenden");
        list = new JList(items);
        name = new JLabel("Name");
        
        //Panels erstellen und einstellen
        tabbedPane = new JTabbedPane();
        kontaktPanel = new JPanel();
        displayPanel = new JPanel();
        
        //Menu
        menu.add(exit);
        menubar.add(menu);
        
        //Liste
        list.setCellRenderer(new MyCellRenderer());
        list.setFont(new Font("Arial", 0, 18));
        list.setLocation(0, 0);
        list.setFixedCellHeight(30);
        list.setFixedCellWidth(100);
        
        //KontaktPanel
        kontaktPanel.setLocation(0, 0);
        kontaktPanel.add(list);
        kontaktPanel.add(displayPanel);
        
        //TabbedPane
        tabbedPane.addTab("Adressbuch", kontaktPanel);
        
        //Sachen verlinken
        setJMenuBar(menubar);
        add(tabbedPane);
        
    }
    
    public static void main(String[] args) {
        Adressbuch adressbuch = new Adressbuch();
        
        adressbuch.setTitle("Adressbuch");
        adressbuch.setDefaultCloseOperation(EXIT_ON_CLOSE);
        adressbuch.setSize(300, 300);
        adressbuch.setVisible(true);
    }
}
 
Ok,
Ich hätte da noch eine weitere Frage bezüglich Rahmen um Elemente. Ich wollte um mein JScrollPane einen Runden Rahmen machen, nun habe ich gegoogelt und bin auf eine Methode mit print gestoßen. Nun dachte ich aber es gibt auch einen Border der runde Ecken unterstützt.

Gibt es so einen Rahmen oder muss man das wircklich mit Paint eines ovalen Rechtecks machen?
 
Ok, hab das ganze mir mal angeschaut. Aber die Rundung ist ja minimal kann man die Runden irgenwie verstärken?
 
Ich habe noch eine Frage ich habe einen TabbedPane und in diesem ist ein Panel mit einer JScrollPane und einem displayPanel mit verschieden Labels. Ich habe nun viele Layoutmanager probiert aber ich finde einfach nicht den richtigen. Ich möchte über mein JScrollPane einen Textbox machen und die breite von der ScrollPane soll ca 1/3 von dem Panel sein und der rest soll das Displaypanel sein. Außerdem soll die Liste ca. 30pt von links Abstand haben.

Aktueller Code:
Java:
package adressbuch;

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;

/**
 *
 * @author Franz
 */
public class Adressbuch extends JFrame{
    
    String[] items = {"Busch Franz" ,"Busch Thosrten","Busch Claudia","Keussen Tobias","Gullo Franci"};
    JPopupMenu popmenu;
    JMenuBar menubar;
    JMenu menu;
    JMenuItem exit;
    JList list;
    JPanel kontaktPanel;
    JTabbedPane tabbedPane;
    JPanel displayPanel;
    JLabel name;
    JScrollPane scrollPane;

    private Adressbuch(){
        
        //JItems erstellen
        popmenu = new JPopupMenu();
        menubar = new JMenuBar();
        menu = new JMenu("Einstellungen");
        exit = new JMenuItem("Beenden");
        list = new JList(items);
        name = new JLabel("Name");
        
        //Panels erstellen und einstellen
        tabbedPane = new JTabbedPane();
        kontaktPanel = new JPanel();
        displayPanel = new RoundedPanel(false,true);
        displayPanel.setPreferredSize(new Dimension(700,700));
        
        //Menu
        menu.add(exit);
        menubar.add(menu);
        
        //Liste
        list.setCellRenderer(new MyCellRenderer());
        list.setFont(new Font("Arial", 0, 18));
        list.setFixedCellHeight(30);
        list.setFixedCellWidth(300);
        scrollPane =new JScrollPane(list);
        
        
        //KontaktPanel
        GridLayout layout = new GridLayout(1,1);
        kontaktPanel.setLayout(layout);
        kontaktPanel.add(scrollPane);
        kontaktPanel.add(displayPanel);
        
        //TabbedPane
        tabbedPane.addTab("Adressbuch", kontaktPanel);
        
        //Sachen verlinken
        setJMenuBar(menubar);
        add(tabbedPane);
        
    }
    
    public static void main(String[] args) {
        Adressbuch adressbuch = new Adressbuch();
        
        adressbuch.setTitle("Adressbuch");
        adressbuch.setDefaultCloseOperation(EXIT_ON_CLOSE);
        adressbuch.setSize(1000, 800);
        adressbuch.setVisible(true);
    }
}
 

Zurück
Oben