Java
/
Swing
- 1 Basics 9
-
Classes S
-
Objects S
-
Arrays S
-
Variables S
-
Loops S
-
Numbers S
-
Strings S
-
Exceptions S
-
Regexp S
- 2 OOP 9
-
Inheritance
-
Polymorphism
-
Static S
-
Abstract
-
Interfaces
-
Constructors S
-
Packages
-
Nested Classes
-
Final
- 3 Compiler 2
-
Sublime Text S
-
Apache Ant
- 4 Collections 8
-
Lists
-
Comparable S
-
Sets
-
Maps
-
Generics
-
Properties
-
Streams
-
Json
- 5 Threads 4
-
Create Thread S
-
Sleep
-
Lock
-
Scheduler
- 6 Design Patterns 4
-
Singleton
-
Observer
-
Strategy
-
Mediator
- 7 Swing 12
-
Frame
-
Panel
-
Listener
-
Combo Box
-
Label
-
Image
-
Menu
-
Table
-
Layout
-
Drawing
-
Timer
-
Designer
- 8 I/O 7
-
Streams IO
-
Socket
-
Watching Files
-
Mail
-
Logger
-
Clipboard
-
Encrypt S
- 9 Effective 7
-
Constructors S
-
Dependency Injection
-
Composition
-
Interfaces Default
-
Import Static S
-
Enums
-
Lambdas
- 10 Junit 5
-
About Junit S
-
Test Case
-
Suite Test
-
Annotations
-
Exceptions
- 11 Lambdas 7
-
Expressions S
-
Functional Interfaces
-
Streams
-
Common Operations
-
Default Methods
-
Static Methods S
-
Single Responsibility
- 12 JavaFX 6
-
Openjfx
-
Scene Builder
-
First App
-
Jar Archive
-
On Action
-
Change Listener
- 13 Maven 4
-
Demo
-
Spring Boot
-
Junit
-
Guava
- 14 Spring Boot 13
-
Quick start S
-
Rest service S
-
Consuming rest S
-
Templates S
-
Security auth S
-
Command line S
-
Scheduled task S
-
Ajax S
-
Jdbc mysql S
-
Encrypt password S
-
Https S
-
Jwt S
-
Post request S
R
Q
JTable
JTable does not contain or cache data. It is simply a view of your data.
copy
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;
public class App extends JFrame {
public static void main(String[] args) {
App frame = new App();
frame.setBounds(200, 200, 600, 400);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.setVisible(true);
}
public App() {
initMenu();
}
public void initMenu() {
JMenuBar menuBar = new JMenuBar();
JMenu menuOpen = new JMenu("Open");
JMenuItem menuOpenItem = new JMenuItem("Table");
menuBar.add(menuOpen);
menuOpen.add(menuOpenItem);
setJMenuBar(menuBar);
// Look here
menuOpenItem.addActionListener(new MenuAction(new Action1()));
}
private class MenuAction implements ActionListener {
private JPanel panel;
private MenuAction(JPanel panel) {
this.panel = panel;
}
@Override
public void actionPerformed(ActionEvent e) {
changePanel(panel);
}
}
public void changePanel(JPanel panel) {
getContentPane().removeAll();
getContentPane().add(panel, BorderLayout.CENTER);
getContentPane().doLayout();
validate();
repaint();
}
}
class Action1 extends JPanel {
public Action1() {
// Look here
// table model
Object[][] data = new Object[][] { };
String[] columns = new String[] {"Total", "Max" };
DefaultTableModel tableModel = new DefaultTableModel(data, columns);
JTable table = new JTable(tableModel);
// table add rows
tableModel.addRow(new Object[] {10,20});
tableModel.addRow(new Object[] {15,25});
// table dimensions and scrollPane (to show columns)
table.setPreferredScrollableViewportSize(new Dimension(280, 100));
table.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(table);
this.add(scrollPane);
}
}
You can change cell color using setForeground() method.
copy
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class App extends JFrame {
public static void main(String[] args) {
//setLookAndFill();
App frame = new App();
frame.setBounds(200, 200, 600, 400);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.setVisible(true);
}
public App() {
initMenu();
}
public void initMenu() {
JMenuBar menuBar = new JMenuBar();
JMenu menuOpen = new JMenu("Open");
JMenuItem menuOpenItem = new JMenuItem("Table");
menuBar.add(menuOpen);
menuOpen.add(menuOpenItem);
setJMenuBar(menuBar);
menuOpenItem.addActionListener(new MenuAction(new Action1()));
}
private class MenuAction implements ActionListener {
private JPanel panel;
private MenuAction(JPanel panel) {
this.panel = panel;
}
@Override
public void actionPerformed(ActionEvent e) {
changePanel(panel);
}
}
public void changePanel(JPanel panel) {
getContentPane().removeAll();
getContentPane().add(panel, BorderLayout.CENTER);
getContentPane().doLayout();
validate();
repaint();
}
}
class Action1 extends JPanel {
public Action1() {
// table model
Object[][] data = new Object[][] { };
String[] columns = new String[] {"Total", "Max" };
DefaultTableModel tableModel = new DefaultTableModel(data, columns);
JTable table = new JTable(tableModel);
// table add rows
tableModel.addRow(new Object[] {10,20});
tableModel.addRow(new Object[] {15,25});
tableModel.addRow(new Object[] {11,22});
tableModel.addRow(new Object[] {33,44});
// table dimensions and scrollPane (to show columns)
table.setPreferredScrollableViewportSize(new Dimension(280, 100));
table.setFillsViewportHeight(true);
table.setGridColor(Color.decode("#CCCCCC"));
// Look here --- col / row
table.getColumnModel().getColumn(0).
setCellRenderer(new CustomRenderer(0, 3));
table.getColumnModel().getColumn(1).
setCellRenderer(new CustomRenderer(1, 2));
JScrollPane scrollPane = new JScrollPane(table);
this.add(scrollPane);
}
}
class CustomRenderer extends DefaultTableCellRenderer { // Look Here
int col;
int row;
public CustomRenderer (int col, int row) {
this.col = col;
this.row = row;
}
@Override
public Component getTableCellRendererComponent
(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column
);
setForeground( (column == this.col && row == this.row) ?
Color.red : Color.black);
setBackground( (column == this.col && row == this.row) ?
Color.decode("#FBEFF5") : Color.white);
return c;
}
}
➥ Questions
Last update: 60 days ago