Java Swingの概要と基本概念
Swingとは Java Swingは、Javaの標準GUI(Graphical User Interface)ライブラリの一つで、豊富なコンポーネントと柔軟な […]
Object[][] data = {{"",""}, {"",""}, {"",""}};
String[] columns = {"Column1", "Column2"};
JTable table = new JTable(data, columns);
String[] items = {"Item 1", "Item 2", "Item 3"};
JList list = new JList<>(items);
JComboBox comboBox = new JComboBox<>();
comboBox.addItem("Red");
comboBox.addItem("Green");
comboBox.addItem("Blue");
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
frame.setJMenuBar(menuBar);
JMenuItem openItem = new JMenuItem("Open");
JMenuItem saveItem = new JMenuItem("Save");
fileMenu.add(openItem);
fileMenu.add(saveItem);
JFileChooser fileChooser = new JFileChooser();
fileChooser.showOpenDialog(frame);
int selectedRow = table.getSelectedRow();
list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
comboBox.addActionListener(e -> {
System.out.println("Selected: " + comboBox.getSelectedItem());
});
Object[][] data = {
{"John", 25},
{"Alice", 30},
{"Bob", 28}
};
String[] columns = {"Name", "Age"};
JTable table = new JTable(data, columns);
list.addListSelectionListener(e -> {
if (!e.getValueIsAdjusting()) {
label.setText("Selected: " + list.getSelectedValue());
}
});
comboBox.addActionListener(e -> {
String color = (String)comboBox.getSelectedItem();
switch(color) {
case "Red": panel.setBackground(Color.RED); break;
case "Green": panel.setBackground(Color.GREEN); break;
case "Blue": panel.setBackground(Color.BLUE); break;
}
});
JMenuItem item = new JMenuItem("Open", new ImageIcon("open.png"));
JMenu editMenu = new JMenu("Edit");
JMenuItem cutItem = new JMenuItem("Cut");
JMenuItem copyItem = new JMenuItem("Copy");
JMenuItem pasteItem = new JMenuItem("Paste");
editMenu.add(cutItem);
editMenu.add(copyItem);
editMenu.add(pasteItem);
menuBar.add(editMenu);
JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) {
label.setText(fileChooser.getSelectedFile().getPath());
}
table.setDefaultEditor(Object.class, null);
list.setCellRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (index % 2 == 0) {
c.setBackground(Color.LIGHT_GRAY);
} else {
c.setBackground(Color.WHITE);
}
return c;
}
});
comboBox.setRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JLabel label = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
label.setIcon(new ImageIcon(value + ".png"));
return label;
}
});
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK));
JPopupMenu popupMenu = new JPopupMenu();
popupMenu.add(new JMenuItem("Cut"));
popupMenu.add(new JMenuItem("Copy"));
popupMenu.add(new JMenuItem("Paste"));
panel.setComponentPopupMenu(popupMenu);
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
table.getSelectionModel().addListSelectionListener(e -> {
if (!e.getValueIsAdjusting()) {
int row = table.getSelectedRow();
if (row >= 0) {
System.out.println("Selected: " + table.getValueAt(row, 0));
}
}
});
JButton addButton = new JButton("Add");
JButton removeButton = new JButton("Remove");
DefaultListModel model = new DefaultListModel<>();
addButton.addActionListener(e -> model.addElement("Item " + (model.size()+1)));
removeButton.addActionListener(e -> {
if (!list.isSelectionEmpty()) {
model.remove(list.getSelectedIndex());
}
});
list.setModel(model);
try (BufferedReader reader = new BufferedReader(new FileReader("items.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
comboBox.addItem(line);
}
} catch (IOException e) {
e.printStackTrace();
}
class MyTableModel extends AbstractTableModel {
private List data;
private String[] columns = {"Name", "Age"};
public MyTableModel(List data) {
this.data = data;
}
@Override
public int getRowCount() { return data.size(); }
@Override
public int getColumnCount() { return columns.length; }
@Override
public Object getValueAt(int row, int col) {
Person p = data.get(row);
return col == 0 ? p.getName() : p.getAge();
}
@Override
public String getColumnName(int col) {
return columns[col];
}
}
// 使用例
List people = getPeopleFromDatabase();
JTable table = new JTable(new MyTableModel(people));
list.setDragEnabled(true);
list.setDropMode(DropMode.INSERT);
list.setTransferHandler(new TransferHandler() {
@Override
public boolean canImport(TransferSupport support) {
return support.isDataFlavorSupported(DataFlavor.stringFlavor);
}
@Override
public boolean importData(TransferSupport support) {
// ドロップ処理の実装
}
});
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenu recentMenu = new JMenu("Recent");
JMenuItem openItem = new JMenuItem("Open");
JMenuItem exitItem = new JMenuItem("Exit");
fileMenu.add(openItem);
fileMenu.add(recentMenu);
fileMenu.addSeparator();
fileMenu.add(exitItem);
// 最近使ったファイルをサブメニューに追加
for (String file : recentFiles) {
recentMenu.add(new JMenuItem(file));
}
menuBar.add(fileMenu);
frame.setJMenuBar(menuBar);
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileNameExtensionFilter("Image Files", "jpg", "png", "gif"));
table.getSelectionModel().addListSelectionListener(e -> {
if (!e.getValueIsAdjusting()) {
int row = table.getSelectedRow();
if (row >= 0) {
DefaultListModel model = new DefaultListModel<>();
// テーブル行からリストデータを生成
for (int i = 0; i < table.getColumnCount(); i++) {
model.addElement(table.getValueAt(row, i).toString());
}
list.setModel(model);
}
}
});
// 状態管理クラス
class AppState {
private boolean editMode = false;
private List> listeners = new ArrayList<>();
public void setEditMode(boolean mode) {
editMode = mode;
listeners.forEach(l -> l.accept(mode));
}
public void addListener(Consumer listener) {
listeners.add(listener);
}
}
// メニュー項目の状態更新
AppState state = new AppState();
state.addListener(editMode -> {
cutItem.setEnabled(editMode);
copyItem.setEnabled(editMode);
pasteItem.setEnabled(editMode);
});
// 編集モード切り替え
JToggleButton editToggle = new JToggleButton("Edit Mode");
editToggle.addActionListener(e -> state.setEditMode(editToggle.isSelected()));