본문 바로가기
2023/PROJECT

[JAVA] 둥근 검색창

by Or0i쿠 2023. 6. 19.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class RoundedTextFieldDemo {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> createAndShowGUI());
    }
    
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("Rounded Text Field Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 200);
        frame.setLayout(new GridBagLayout());
        
        GridBagConstraints constraints = new GridBagConstraints();
        constraints.insets = new Insets(10, 10, 10, 10);
        constraints.fill = GridBagConstraints.HORIZONTAL;
        
        JTextField textField = createRoundedTextField();
        constraints.gridy = 0;
        frame.add(textField, constraints);
        
        JButton submitButton = createSubmitButton(textField);
        constraints.gridy = 1;
        frame.add(submitButton, constraints);
        
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
    
    private static JTextField createRoundedTextField() {
        JTextField textField = new JTextField();
        textField.setBorder(new RoundBorder());
        return textField;
    }
    
    private static JButton createSubmitButton(JTextField textField) {
        JButton button = new JButton("Submit");
        button.addActionListener(e -> {
            String text = textField.getText();
            if (!text.isEmpty()) {
                JOptionPane.showMessageDialog(null, "입력한 내용: " + text);
            }
        });
        return button;
    }
    
    static class RoundBorder extends AbstractBorder {
        public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
            g.setColor(c.getBackground().darker());
            g.drawRoundRect(x, y, width - 1, height - 1, 15, 15);
        }
        
        public Insets getBorderInsets(Component c) {
            return new Insets(5, 10, 5, 10);
        }
        
        public Insets getBorderInsets(Component c, Insets insets) {
            insets.left = insets.right = 10;
            insets.top = insets.bottom = 5;
            return insets;
        }
    }
}

+ 네이버지도 검색(0612)

package search;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
//import java.awt.*;
//import java.awt.event.*;
//import javax.swing.*;
import javax.swing.border.*;

public class ChatWindow extends JFrame {
    private JTextArea chatArea;
    private JTextField inputField;

    public ChatWindow() {
        setTitle("Chat Window");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        chatArea = new JTextArea();
        chatArea.setEditable(false);
        JScrollPane scrollPane = new JScrollPane(chatArea);
        add(scrollPane, BorderLayout.CENTER);

        inputField = createRoundedTextField();
        inputField.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                sendMessage();
            }
        });
        inputField.setBackground(Color.decode("#FBF4D2"));
        add(inputField, BorderLayout.SOUTH);
        setSize(480, 480);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static JTextField createRoundedTextField() {
        JTextField textField = new JTextField();
        textField.setBorder(new RoundBorder());
        return textField;
    }
    
    static class RoundBorder extends AbstractBorder {
        public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
            g.setColor(c.getBackground().darker());
            g.drawRoundRect(x, y, width - 1, height - 1, 15, 15);
        }
        
        public Insets getBorderInsets(Component c) {
            return new Insets(5, 10, 5, 10);
        }
        
        public Insets getBorderInsets(Component c, Insets insets) {
            insets.left = insets.right = 10;
            insets.top = insets.bottom = 5;
            return insets;
        }
    }

    private void appendMessage(String message) {
        chatArea.append(message + "\n");
    }

    private void sendMessage() {
        String message = inputField.getText();

        if (message == null || message.trim().isEmpty()) {
            appendMessage("메시지를 입력해주세요.");
            return;
        }

        appendMessage("나: " + message);
        inputField.setText("");

        // Perform Naver map search
        String searchUrl = "https://map.naver.com/v5/search/" + URLEncoder.encode(message, StandardCharsets.UTF_8);
        try {
            Desktop.getDesktop().browse(new URI(searchUrl));
        } catch (IOException | URISyntaxException e) {
            e.printStackTrace();
            // Handle any error that occurred during browsing
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new ChatWindow();
            }
        });
    }
}

'2023 > PROJECT' 카테고리의 다른 글

[JAVA] 검색창  (0) 2023.06.21
[JAVA] 캘린더 UI  (0) 2023.06.20
[JAVA] 오라클 일정 추가 캘린더  (0) 2023.06.20
[JAVA]이미지창에 api캘린더 추가  (0) 2023.06.19
[JAVA] 지정된 좌표 클릭 이벤트  (0) 2023.06.19