
Swingアプリ開発ステップアップガイド
Swing初級から中級者向けに、4つの異なるアプリケーションを段階的に開発する方法を解説します。各アプリケーションは独立しており、難易度順に並んでいます。 ① […]
JFrame frame = new JFrame("My App");
frame.setVisible(true);
JFrame frame = new JFrame();
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
JLabel label = new JLabel("Welcome!");
JButton button = new JButton("Click");
button.addActionListener(e -> System.out.println("Clicked!"));
JTextField textField = new JTextField("Input here");
JOptionPane.showMessageDialog(null, "Hello!");
JPanel panel = new JPanel(new FlowLayout());
panel.add(new JButton("Button 1"));
panel.add(new JButton("Button 2"));
panel.add(new JButton("Button 3"));
JPanel panel = new JPanel();
panel.setBackground(Color.GREEN);
JButton button = new JButton();
button.setToolTipText("Press me");
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.add(new JLabel("North"), BorderLayout.NORTH);
frame.add(new JPanel(), BorderLayout.CENTER);
frame.add(new JButton("South"), BorderLayout.SOUTH);
frame.setVisible(true);
JTextField field1 = new JTextField(5);
JTextField field2 = new JTextField(5);
JLabel resultLabel = new JLabel();
JButton button = new JButton("Add");
button.addActionListener(e -> {
try {
int sum = Integer.parseInt(field1.getText()) + Integer.parseInt(field2.getText());
resultLabel.setText("Result: " + sum);
} catch (NumberFormatException ex) {
resultLabel.setText("Invalid input");
}
});
int result = JOptionPane.showConfirmDialog(
null, "Continue?", "Confirm", JOptionPane.YES_NO_OPTION);
System.out.println(result == JOptionPane.YES_OPTION ? "Yes" : "No");
JPanel panel = new JPanel(new GridLayout(4, 4));
for (int i = 0; i < 16; i++) {
panel.add(new JButton("Button " + (i+1)));
}
class MyPanel extends JPanel {
public MyPanel() {
setBackground(Color.BLUE);
}
}
JLabel coordLabel = new JLabel();
panel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
coordLabel.setText("X: " + e.getX() + ", Y: " + e.getY());
}
});
textField.setDocument(new PlainDocument() {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if (getLength() + str.length() <= 10) {
super.insertString(offs, str, a);
}
}
});
button.addActionListener(e -> frame.setTitle("New Title"));
ButtonGroup group = new ButtonGroup();
JRadioButton rb1 = new JRadioButton("Option 1");
JRadioButton rb2 = new JRadioButton("Option 2");
JRadioButton rb3 = new JRadioButton("Option 3");
group.add(rb1);
group.add(rb2);
group.add(rb3);
checkBox.addItemListener(e -> {
System.out.println(e.getStateChange() == ItemEvent.SELECTED ? "Checked" : "Unchecked");
});
JComboBox comboBox = new JComboBox<>();
comboBox.addItem("Red");
comboBox.addItem("Green");
comboBox.addItem("Blue");
button.addActionListener(e -> {
String input = JOptionPane.showInputDialog("Enter text:");
label.setText(input);
});
panel.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
panel.setBackground(Color.YELLOW);
}
public void mouseExited(MouseEvent e) {
panel.setBackground(Color.WHITE);
}
});
JTextArea textArea = new JTextArea(10, 30);
JScrollPane scrollPane = new JScrollPane(textArea);
JLabel keyLabel = new JLabel();
textField.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
keyLabel.setText("Key pressed: " + e.getKeyChar());
}
});
label.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
label.setLocation(label.getX() + e.getX() - label.getWidth()/2,
label.getY() + e.getY() - label.getHeight()/2);
}
});
JDialog dialog = new JDialog(frame, "Input Dialog", true);
JTextField inputField = new JTextField(20);
JButton okButton = new JButton("OK");
okButton.addActionListener(e -> {
String value = inputField.getText();
// 値を使用
dialog.dispose();
});
dialog.setLayout(new FlowLayout());
dialog.add(inputField);
dialog.add(okButton);
dialog.pack();
dialog.setVisible(true);
class DrawingPanel extends JPanel {
private List points = new ArrayList<>();
public DrawingPanel() {
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
points.add(e.getPoint());
repaint();
}
});
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setStroke(new BasicStroke(3));
for (int i = 1; i < points.size(); i++) {
Point p1 = points.get(i-1);
Point p2 = points.get(i);
g2.drawLine(p1.x, p1.y, p2.x, p2.y);
}
}
}
class ObservableModel {
private String data;
private List> listeners = new ArrayList<>();
public void setData(String data) {
this.data = data;
notifyListeners();
}
public void addListener(Consumer listener) {
listeners.add(listener);
}
private void notifyListeners() {
listeners.forEach(l -> l.accept(data));
}
}
// 使用例
ObservableModel model = new ObservableModel();
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
model.addListener(text -> {
label1.setText(text);
label2.setText("Length: " + text.length());
});
model.setData("Sample");
class CircleLayout implements LayoutManager {
public void layoutContainer(Container parent) {
int radius = Math.min(parent.getWidth(), parent.getHeight()) / 3;
Point center = new Point(parent.getWidth()/2, parent.getHeight()/2);
double angle = 2 * Math.PI / parent.getComponentCount();
for (int i = 0; i < parent.getComponentCount(); i++) {
Component c = parent.getComponent(i);
int x = (int)(center.x + radius * Math.cos(i * angle) - c.getWidth()/2;
int y = (int)(center.y + radius * Math.sin(i * angle) - c.getHeight()/2);
c.setBounds(x, y, c.getPreferredSize().width, c.getPreferredSize().height);
}
}
// 他の必要なメソッドも実装
}
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.addTab("Tab 1", new JPanel());
tabbedPane.addTab("Tab 2", new JPanel());
tabbedPane.addTab("Tab 3", new JPanel());
frame.add(tabbedPane);