出来的效果不好,我要的是,一行一个组件,最后2行,是每行2个JLabel
纠结一天了
只要出界面,不要求事件处理,帮帮忙改改代码啊
- Java code
import java.awt.*;import java.awt.event.*;import javax.swing.*;public class GetIp extends JFrame {public GetIp() { super("获得IP地址"); JLabel jl1=new JLabel("请输入网址:"); // 固定在一行 JTextField jtf1=new JTextField(15); // 固定在一行 JButton jb1=new JButton("获得IP地址");// 固定在一行 JLabel jl2=new JLabel("本机IP地址:");JLabel jl4=new JLabel("");// 固定在一行 JLabel jl3=new JLabel("外网IP地址:");JLabel jl5=new JLabel("");// 固定在一行 JPanel panel1 =new JPanel(); panel1.add(jl1); panel1.add(jtf1); panel1.add(jb1); panel1.add(jl2); panel1.add(jl3); add(panel1); setBounds(100,100,220,200); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); new GetIp(); }}
------解决方案--------------------
- Java code
import javax.swing.Box;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public class GetIp extends JFrame { public GetIp() { super("获得IP地址"); Box box1 = Box.createVerticalBox(); JLabel jl1 = new JLabel("请输入网址:"); // 固定在一行 box1.add(jl1); JTextField jtf1 = new JTextField(15); // 固定在一行 box1.add(jtf1); JButton jb1 = new JButton("获得IP地址");// 固定在一行 box1.add(jb1); Box box2 = Box.createHorizontalBox(); JLabel jl2 = new JLabel("本机IP地址:"); box2.add(jl2); JLabel jl4 = new JLabel("4534534");// 固定在一行 box2.add(jl4); Box box3 = Box.createHorizontalBox(); JLabel jl3 = new JLabel("外网IP地址:"); JLabel jl5 = new JLabel("123545");// 固定在一行 box3.add(jl3); box3.add(jl5); box1.add(box2); box1.add(box3); JPanel panel1 = new JPanel();// panel1.add(jl1);// panel1.add(jtf1);// panel1.add(jb1); panel1.add(box1); // panel1.add(jl2);// panel1.add(jl3); add(panel1); setBounds(100, 100, 220, 200); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); new GetIp(); }}
------解决方案--------------------
使用一个第三方布局管理器,如 DesignGridLayout。
- Java code
import java.awt.*;import java.awt.event.*;import javax.swing.*;import net.java.dev.designgridlayout.DesignGridLayout;public class GetIp extends JPanel { public GetIp() { DesignGridLayout layout = new DesignGridLayout(this); layout.row().left().add(new JLabel("请输入网址:")); layout.row().left().add(new JTextField(15)); // 固定在一行 layout.row().center().add(new JButton("获得IP地址"));// 固定在一行 layout.row().grid(new JLabel("本机IP地址:")).add(new JLabel("")); layout.row().grid(new JLabel("外网IP地址:")).add(new JLabel("")); } public static void main(String[] args) { //JFrame.setDefaultLookAndFeelDecorated(true); EventQueue.invokeLater(new Runnable(){ @Override public void run(){ JFrame frame = new JFrame("获得IP地址"); frame.setContentPane(new GetIp()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }); }}