在java中单击按钮将本机IP地址显示在文本框中怎么写?

只需要说明在监听器中的代码如何写就好
2025-04-14 18:37:25
推荐回答(2个)
回答(1):

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.InetAddress;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TestSwing extends JFrame implements ActionListener {
JPanel jp1 = new JPanel();
JTextField textField = new JTextField(20);
JButton button = new JButton("点击");

public TestSwing() {
setBounds(180, 135, 500, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jp1.setBounds(0, 50, 500, 100);
Container c = this.getContentPane();
c.setLayout(null);
c.add(jp1);
jp1.add(textField);
jp1.add(button);
button.addActionListener(this);
setVisible(true);
setResizable(false); // 不让用户改变窗口大小
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args) {
new TestSwing();
}

@Override
public void actionPerformed(ActionEvent e) {
// 用户界面
if (e.getSource() == button) {
try {
textField.setText(InetAddress.getLocalHost().getHostAddress());
} catch (UnknownHostException e1) {
e1.printStackTrace();
}
}
}
}

回答(2):

/**
* 获取访问者IP
*
* 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。
*
* 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割),
* 如果还不存在则调用Request .getRemoteAddr()。
*
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("X-Forwarded-For");
if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个IP值,第一个为真实IP。
int index = ip.indexOf(',');
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
} else {
return request.getRemoteAddr();
}
}