概要

  • このページはKotlinSwingを使用する場合のサンプルの一覧です。

Swing + Kotlin サンプル

JTable

  • Kotlin
    import java.awt.*
    import javax.swing.*
    import javax.swing.table.*
    
    fun makeUI(): JComponent {
      val columnNames = arrayOf("String", "Integer", "Boolean")
      val data = arrayOf(
          arrayOf("aaa", 12, true),
          arrayOf("bbb", 5, false),
          arrayOf("CCC", 92, true),
          arrayOf("DDD", 0, false))
      val model = object : DefaultTableModel(data, columnNames) {
        override fun getColumnClass(column : Int) : Class<Any> {
          return getValueAt(0, column).javaClass
        }
      }
      val table = JTable(model).apply {
        autoCreateRowSorter = true
      }
      return JPanel(BorderLayout(5, 5)).apply {
        setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5))
        add(JScrollPane(table))
      }
    }
    fun main(args : Array<String>) {
      EventQueue.invokeLater {
        JFrame("kotlin swing").apply {
          defaultCloseOperation = WindowConstants.EXIT_ON_CLOSE
          add(makeUI())
          size = Dimension(320, 240)
          setLocationRelativeTo(null)
          setVisible(true)
        }
      }
    }
    
  • Java
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    public class JTableExample {
      public JComponent makeUI() {
        String[] columnNames = {"String", "Integer", "Boolean"};
        Object[][] data = {
          {"aaa", 12, true}, {"bbb", 5, false},
          {"CCC", 92, true}, {"DDD", 0, false}
        };
        TableModel model = new DefaultTableModel(data, columnNames) {
          @Override public Class<?> getColumnClass(int column) {
            return getValueAt(0, column).getClass();
          }
        };
        JTable table = new JTable(model);
        table.setAutoCreateRowSorter(true);
    
        JPanel p = new JPanel(new BorderLayout());
        p.add(new JScrollPane(table));
        return p;
      }
      public static void main(String... args) {
        EventQueue.invokeLater(() -> {
          JFrame f = new JFrame();
          f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
          f.getContentPane().add(new JTableExample().makeUI());
          f.setSize(320, 240);
          f.setLocationRelativeTo(null);
          f.setVisible(true);
        });
      }
    }
    

コメント