Swing JScrollPane Tabelle ändern (2 Tabellen)

Disq

Mitglied
Hallo erstmal,

wie ihr im Anhang sehen könnt, ist der erste JTable erfolgreich auf dem JScrollPane.
Die Daten für die Tabelle kommen von einer embedded Datenbank und werden in einem zwei-dimensionalen Array abgespeichert.

Nun zu meinem eigentlichen Problem:
Wie ihr sehen könnt, befinden sich oben 2 RadioButtons. Diese sollen die Tabellen wechseln, macht dies aber nicht :D. Ich versuche es derzeitig mit JScrollPane.setViewportView(JTable) und die 2. Tabelle kommt einfach nicht in den JScrollPane rein. Ich habe gedacht es müsste evtl. neugezeichnet werden und habe auch JFrame.repaint() sowie JScrollPane.repaint() aufgerufen, leider aber ohne Erfolg. Wie müsste ich daran gehen um mein Problem zu lösen?
Soll ich evtl. den JTable mit den neuen Daten neu zu initialisieren, statt den viewportView zu verändern? Ich wäre um jede Hilfe dankbar und freue mich auf Vorschläge von erfahrenen GUI-Designer hier im Forum.
 

Anhänge

  • Bildschirmfoto 2016-05-26 um 15.04.19.png
    Bildschirmfoto 2016-05-26 um 15.04.19.png
    66,6 KB · Aufrufe: 40

Disq

Mitglied
Sieht derzeitig so aus und ich komme da nicht weiter :/
Code:
package GUI;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.swing.JTable;
import datahandling.ConfigHandler;
import datahandling.DatabaseHandler;



public class EditUI extends JFrame implements ActionListener{

    private JTable tableProduct;
    private JTable tableOperator;
    JScrollPane scrollPane;
    ConfigHandler ch = new ConfigHandler(".//config//lang.properties");
    JRadioButton rbtnProducts;
    JRadioButton rbtnOperator;
    JButton btnEdit;
    JButton btnNew;
    JButton btnDelete;
    DatabaseHandler dbHandler;

    public EditUI() {

        getContentPane().setBackground(Color.DARK_GRAY);
        getContentPane().setLayout(new BorderLayout(0, 0));

        //NORT SIDE
        JPanel p = new JPanel();
        p.setBackground(new Color(242, 161, 22));
        rbtnProducts = new JRadioButton(ch.getConfigString("products"));
        rbtnProducts.setSelected(true);
        rbtnProducts.addActionListener(this);
        rbtnOperator = new JRadioButton(ch.getConfigString("operator"));
        rbtnOperator.setBackground(Color.DARK_GRAY);
        rbtnOperator.addActionListener(this);
        p.add(rbtnProducts);
        p.add(rbtnOperator);
        getContentPane().add(p, BorderLayout.NORTH);

        //SOUTH SIDE
        JPanel s = new JPanel();
        s.setBackground(new Color(242, 161, 22));
//        b.setBorder(BorderFactory.createEmptyBorder());
//        b.setContentAreaFilled(false);
        BufferedImage bimg = null;
        try{
            bimg = ImageIO.read(new File(".//menu_icons//button_rounded.png"));
        }catch(IOException e){
            e.printStackTrace();
        }
        ImageIcon ii = new ImageIcon();
        ii.setImage(bimg.getScaledInstance(100, 35, 0));
        btnNew = new JButton(ch.getConfigString("new"));
        btnNew.setBackground(new Color(242, 161, 22));
        btnNew.setIcon(ii);
        btnNew.setHorizontalTextPosition(JButton.CENTER);
        btnNew.setVerticalTextPosition(JButton.CENTER);
        btnNew.addActionListener(this);
        btnNew.setContentAreaFilled(false);
        btnNew.setBorder(BorderFactory.createEmptyBorder());
        btnNew.setOpaque(true);
        btnEdit = new JButton(ch.getConfigString("edit"));
        //this prevents white pieces at the corner!
        btnEdit.setBackground(new Color(242, 161, 22));
        btnEdit.setIcon(ii);
        btnEdit.setHorizontalTextPosition(JButton.CENTER);
        btnEdit.setVerticalTextPosition(JButton.CENTER);
        btnEdit.addActionListener(this);
//        btnEdit.setEnabled(false);
        btnEdit.setContentAreaFilled(false);
        btnEdit.setBorder(BorderFactory.createEmptyBorder());
        btnEdit.setOpaque(true);
        btnDelete = new JButton(ch.getConfigString("delete"));
        btnDelete.setBackground(new Color(242, 161, 22));
        btnDelete.setIcon(ii);
        btnDelete.setHorizontalTextPosition(JButton.CENTER);
        btnDelete.setVerticalTextPosition(JButton.CENTER);
        btnDelete.addActionListener(this);
//        btnDelete.setEnabled(false);
        btnDelete.setContentAreaFilled(false);
        btnDelete.setOpaque(true);
        btnDelete.setBorder(BorderFactory.createEmptyBorder());
        s.add(btnNew);
        s.add(btnEdit);
        s.add(btnDelete);
        getContentPane().add(s, BorderLayout.SOUTH);
        //CENTER
        tableProduct = new JTable();
        tableProduct.setBackground(Color.DARK_GRAY);
        tableOperator = new JTable();
        tableProduct.setBackground(Color.DARK_GRAY);
        //getContentPane().add(tableProduct, BorderLayout.CENTER);
        fillList("products",tableProduct);
        //Create the scroll pane and add the table to it.
        //scrollPane = new JScrollPane(tableProduct);
        scrollPane.getViewport().setBackground(tableProduct.getBackground());
        //Add the scroll pane to this panel.
        add(scrollPane);
        //setUndecorated(false);
        //setResizable(false);
        pack();
        setVisible(true);
        setSize(Toolkit.getDefaultToolkit().getScreenSize());
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
    private void fillList(String s,JTable tab){
        dbHandler = new DatabaseHandler(s);
        int rowCount = dbHandler.getRowCount();
        int colCount = dbHandler.getColumnCount();

//        for(int i =0;i<rowCount;i++){
//            for(int j = 0;j<colCount;j++){
//                System.out.println(dbHandler.getData()[i][j]);
//            }
//        }
//        for(int i = 0; i < dbHandler.getColumnCount();i++){
//            System.out.println(dbHandler.getColumnNames()[i]);
//        }

        tab = new JTable(dbHandler.getData(),dbHandler.getColumnNames());
        tab.setFillsViewportHeight(true);
        scrollPane = new JScrollPane(tab);
        //scrollPane.setViewportView(tab);
        scrollPane.repaint();
        repaint();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object o = (Object)e.getSource();
        if(o == rbtnProducts){
            rbtnOperator.setSelected(false);
            fillList(ch.getConfigString("db_products"),tableProduct);
        }elseif(o == rbtnOperator){
            rbtnProducts.setSelected(false);
            fillList(ch.getConfigString("db_operator"),tableOperator);
        }else if(o == btnNew){
            dbHandler.addProducts("Fanta Flasche 1,5 L", "beverage", 4.2f);
        }else if(o == btnEdit){
            System.out.println(btnEdit.getText());
        }else if(o == btnDelete){
            System.out.println(btnDelete.getText());
        }
    }
}
 

Disq

Mitglied
Wenn du mal den Code richtig anschaust, siehst du, dass der JScrollPane benutzt wird und die Zeile, die ich auskommentiert habe, hatte ich -logischer Weise- schon mal im nicht auskommentiertem Status und dies führte nicht zum Erfolg...
 

Harry Kane

Top Contributor
Ausserdem übergibst du an deine fillList-Methode eine JTable-Instanz, die du nicht verwendest.
Einfach die Zeile
Java:
scrollPane = new JScrollPane(tab);
in deiner fillList-Methode zu löschen, dürfte zu einer NullPointerException führen, weil die scrollPane-Variable erst in der fillList-Methode initialisiert wird. Um dieses Problem zu umgehen, musst du die Kommentarzeichen vor der Zeile
Java:
//scrollPane = new JScrollPane(tableProduct);
im Konstruktor von EditUI auskommentieren.
 

Disq

Mitglied
Hi, Harry Kane tut mir leid, ich habe das was du geschrieben hast, falsch gelesen gehabt. Danke dir :))
Kann geschlossen werden :)
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JScrollPane - JEditorPane und HTML-Tabelle AWT, Swing, JavaFX & SWT 2
T Swing JScrollPane- und Tabelle-Header Problem AWT, Swing, JavaFX & SWT 25
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
B Swing JScrollPane scrollt nicht AWT, Swing, JavaFX & SWT 10
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
N Swing JScrollPane mit Tastatur bedienen? AWT, Swing, JavaFX & SWT 0
F JScrollPane anzeige AWT, Swing, JavaFX & SWT 7
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
P Swing JEditorPane in Kombination mit JScrollPane AWT, Swing, JavaFX & SWT 29
S Swing jScrollPane - pro Eintrag der Liste, die jCheckBoxes Speichern die in dem Eintrag aktiviert wurden AWT, Swing, JavaFX & SWT 2
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
D JScrollPane in JTabbedPane AWT, Swing, JavaFX & SWT 3
MaxG. Swing JScrollPane AWT, Swing, JavaFX & SWT 10
Soloeco Swing JScrollPane AWT, Swing, JavaFX & SWT 6
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
J JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 5
B LayoutManager GridBagLayout und JScrollPane AWT, Swing, JavaFX & SWT 5
Thallius JScrollPane Scrollpos setzen nach Neuzeichnen AWT, Swing, JavaFX & SWT 3
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
U JScrollPane -> JTabbedPane u.A. AWT, Swing, JavaFX & SWT 3
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
V JScrollPane im zur Laufzeit verändernden JFrame AWT, Swing, JavaFX & SWT 0
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
Bluedaishi JScrollpane AWT, Swing, JavaFX & SWT 0
L JScrollPane scrollt nicht !! AWT, Swing, JavaFX & SWT 3
F JScrollPane Position setzen (x=0, y=0) AWT, Swing, JavaFX & SWT 2
R JScrollPane überdeckt JPanel? AWT, Swing, JavaFX & SWT 7
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
S JScrollPane und BorderLayout AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
W Swing JScrollPane für mein Fenster AWT, Swing, JavaFX & SWT 4
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
F JTable mit JScrollPane AWT, Swing, JavaFX & SWT 4
I JPanel in JScrollPane verkleinert sich leider nicht .... AWT, Swing, JavaFX & SWT 2
G JScrollPane bricht am Ende der Anzeige nicht um AWT, Swing, JavaFX & SWT 2
J Swing JTextPane mit JScrollPane auf JPanel scrollen nicht AWT, Swing, JavaFX & SWT 6
W Sichtbarer Bereich JScrollPane vs. JList AWT, Swing, JavaFX & SWT 3
B Swing JPanel in JScrollPane einfügen AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Transparentes JScrollPane AWT, Swing, JavaFX & SWT 0
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
A JScrollPane - ScrollBar Buttongröße verändern AWT, Swing, JavaFX & SWT 1
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
A Swing JScrollPane Problem AWT, Swing, JavaFX & SWT 6
H Swing JScrollPane mit "viel Inhalt" scrollt zu langsam (inkl. See-For-Yourself.jar :D) AWT, Swing, JavaFX & SWT 2
T Swing JScrollPane in JPanel - Breite dynamisch, Höhe fix - wie? AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane in JScrollPane - Problem AWT, Swing, JavaFX & SWT 3
K Bug in JScrollPane? AWT, Swing, JavaFX & SWT 4
T Swing JScrollPane Farbe der Scrollbar AWT, Swing, JavaFX & SWT 3
M JScrollPane Header AWT, Swing, JavaFX & SWT 3
G JScrollPane über JScrollPane AWT, Swing, JavaFX & SWT 2
V LayoutManager JScrollPane verwirft Elementanordnung AWT, Swing, JavaFX & SWT 3
B JScrollPane Problem AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane AWT, Swing, JavaFX & SWT 7
H cardlayout und jscrollpane AWT, Swing, JavaFX & SWT 14
F 2D-Grafik Skalieren der Scrollbars beim Zoomen einer JScrollPane AWT, Swing, JavaFX & SWT 4
B JScrollPane Horizontal klappt nicht. AWT, Swing, JavaFX & SWT 4
G JScrollPane reagiert nicht auf Änderung der JPanel-Größe AWT, Swing, JavaFX & SWT 4
C jPanel auf jScrollPane zentrieren AWT, Swing, JavaFX & SWT 3
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
U Swing JPane und JScrollpane in JSplitpane-Seite: Scrollen funktioniert nicht AWT, Swing, JavaFX & SWT 3
A Swing Korrekte JTable.rowAt(point) für JTable in JScrollPane AWT, Swing, JavaFX & SWT 5
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
S JScrollPane reagiert nicht AWT, Swing, JavaFX & SWT 3
X JScrollPane zu JTable hinzufügen AWT, Swing, JavaFX & SWT 16
D LayoutManager JScrollPane mit dynamischem Inhalt AWT, Swing, JavaFX & SWT 8
P Swing JScrollpane AWT, Swing, JavaFX & SWT 2
B JScrollPane scrollt nicht immer automatisch AWT, Swing, JavaFX & SWT 2
V Swing JScrollPane Viewport verschieben AWT, Swing, JavaFX & SWT 2
J JScrollPane Probleme AWT, Swing, JavaFX & SWT 3
S Swing JScrollPane verliert Scrollbars AWT, Swing, JavaFX & SWT 5
D Swing JTable in JScrollpane beliebig verbreitern AWT, Swing, JavaFX & SWT 5
A Swing Anzeige Text in JScrollpane AWT, Swing, JavaFX & SWT 8
J Swing Unteren Abstand für JTable in JScrollPane festlegen AWT, Swing, JavaFX & SWT 10
xehpuk Swing Line-wrapping von JTextPane (in JScrollPane) AWT, Swing, JavaFX & SWT 3
M JScrollPane Problem AWT, Swing, JavaFX & SWT 6
S Swing JScrollpane und ViewPort AWT, Swing, JavaFX & SWT 4
D JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 12
X JScrollPane funzt net... AWT, Swing, JavaFX & SWT 5
H jscrollpane AWT, Swing, JavaFX & SWT 12
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
A Problem mit JScrollPane in einer JScrollpane AWT, Swing, JavaFX & SWT 4
B JScrollPane Problem AWT, Swing, JavaFX & SWT 25
P Swing JScrollPane-Inhalt: Grösse anpassen AWT, Swing, JavaFX & SWT 6
G Swing Höhe des View eines JScrollPane fest auf Höhe des JScrollPane setzen! AWT, Swing, JavaFX & SWT 4
A JScrollPane AWT, Swing, JavaFX & SWT 16
C Swing JScrollPane und Scroll-Geschwindigkeit AWT, Swing, JavaFX & SWT 8
S JScrollpane mit JPanel und Probleme AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben