JAVASE——全面總結(jié)JAVA中的GUI編程

      網(wǎng)友投稿 882 2025-04-02

      前言

      萬(wàn)字深入總結(jié)Java中的swing編程

      @[toc]

      1.簡(jiǎn)介

      GUI的核心技術(shù)

      Swing和AWT

      界面不美觀

      需要jre環(huán)境!

      可以寫(xiě)出自己心中想要的小工具

      工作的時(shí)候,也可能需要維護(hù)到Swing界面,概率極小!

      了解MVC架構(gòu),了解監(jiān)聽(tīng)!

      組件:

      窗口

      彈出

      面板

      文本框

      列表框

      按鈕

      圖片

      監(jiān)聽(tīng)事件

      鼠標(biāo)事件

      鍵盤(pán)事件

      2、AWT

      new 類!

      包含了很多類和接口!

      用于GUI編程圖像用戶界面

      元素:窗口、按鈕、文本框

      Java.awt包

      單窗口示例

      public static void main(String[] args) { Frame frame = new Frame("我的第一個(gè)Java圖形界面窗口"); //設(shè)置窗口可見(jiàn)性 frame.setVisible(true); //設(shè)置窗口大小 frame.setSize(400,400); //設(shè)置窗口顏色 frame.setBackground(Color.CYAN); //設(shè)置窗口的出現(xiàn)位置 frame.setLocation(300,300); //是否可調(diào)整大小 frame.setResizable(false); }

      多窗口示例

      JAVASE——全面總結(jié)JAVA中的GUI編程

      public class OneFrame { public static void main(String[] args) { MyFrame l1 = new MyFrame(100, 100, 200, 200, Color.yellow); MyFrame l2 = new MyFrame(300, 100, 200, 200, Color.CYAN); MyFrame l3 = new MyFrame(100, 300, 200, 200, Color.black); MyFrame l4 = new MyFrame(300, 300, 200, 200, Color.blue); } } class MyFrame extends Frame { static int n = 0; public MyFrame(int x, int y, int w, int h, Color color) { super("l" + (n++)); setVisible(true); setBounds(x, y, w, h); setBackground(color); setResizable(false); } }

      public static void main(String[] args) { Frame frame = new Frame(); Panel panel = new Panel(); //設(shè)置布局 frame.setLayout(null); //坐標(biāo) frame.setBounds(100,100,100,100); frame.setBackground(new Color(40,40,40)); //panel設(shè)置坐標(biāo),相對(duì)于frame panel.setBounds(50,50,50,50); panel.setBackground(new Color(199,199,199)); frame.add(panel); frame.setVisible(true); //監(jiān)聽(tīng)事件,監(jiān)聽(tīng)創(chuàng)口關(guān)閉事件,System.exit(0);適配器模式 frame.addWindowListener(new WindowAdapter() { //窗口點(diǎn)擊關(guān)閉的時(shí)候需要做的事情 public void windowClosing(WindowEvent e) { System.exit(0); } }); }

      流式布局

      public static void main(String[] args) { Frame frame = new Frame("FlowLayout"); //組件——>按鈕 Button button1 = new Button("Button1"); Button button2 = new Button("Button2"); Button button3 = new Button("Button3"); //設(shè)置為流式布局 frame.setLayout(new FlowLayout());//默認(rèn)居中 frame.setLayout(new FlowLayout(FlowLayout.LEFT));//左 frame.setLayout(new FlowLayout(FlowLayout.RIGHT));//右 frame.setSize(400,400); //把按鈕添加上去 frame.add(button1); frame.add(button2); frame.add(button3); frame.setVisible(true); }

      東西南北中布局

      public static void main(String[] args) { Frame frame = new Frame("BorderLayout"); Button east = new Button("East"); Button west = new Button("West"); Button south = new Button("South"); Button north = new Button("North"); Button center = new Button("Center"); frame.add(east,BorderLayout.EAST); frame.add(west,BorderLayout.WEST); frame.add(south,BorderLayout.SOUTH); frame.add(north,BorderLayout.NORTH); frame.add(center,BorderLayout.CENTER); //自動(dòng)選擇 frame.pack(); frame.setVisible(true); }

      表格布局

      public static void main(String[] args) { Frame frame = new Frame("GridLayout"); Button btn1 = new Button("btn1"); Button btn2 = new Button("btn2"); Button btn3 = new Button("btn3"); Button btn4 = new Button("btn4"); Button btn5 = new Button("btn5"); Button btn6 = new Button("btn6"); frame.setLayout(new GridLayout(3,2)); frame.add(btn1); frame.add(btn2); frame.add(btn3); frame.add(btn4); frame.add(btn5); frame.add(btn6); frame.pack();//Java函數(shù)! 自動(dòng)選擇一個(gè)最優(yōu)的位置來(lái)確定 frame.setVisible(true); }

      多種布局結(jié)合:

      public static void main(String[] args) { Frame frame = new Frame(); frame.setVisible(true); frame.setBackground(Color.WHITE); frame.setBounds(600,600,200,200); frame.setLayout(new GridLayout(2,1)); Panel panel1 = new Panel(new BorderLayout()); Panel panel2 = new Panel(new GridLayout(2,1)); Panel panel3 = new Panel(new BorderLayout()); Panel panel4= new Panel(new GridLayout(2,2)); panel1.add(new Button("East"),BorderLayout.EAST); panel1.add(new Button("West"),BorderLayout.WEST); panel2.add(new Button("panel2")); panel2.add(new Button("panel2")); panel1.add(panel2,BorderLayout.CENTER); panel3.add(new Button("East"),BorderLayout.EAST); panel3.add(new Button("West"),BorderLayout.WEST); for(int i=0;i<4;i++){ panel4.add(new Button("panel4")); } panel3.add(panel4,BorderLayout.CENTER); frame.add(panel1); frame.add(panel3); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); }

      總結(jié):

      Frame是一個(gè)頂級(jí)窗口

      Panel 無(wú)法單獨(dú)顯示,必須添加到某個(gè)容器中

      布局管理器

      流式布局

      東西南北中布局

      表格式布局

      public static void main(String[] args) { //按下按鈕,觸發(fā)一些事件 Frame frame = new Frame(); Button button = new Button(); //因?yàn)閍ddActionListener()需要addActionListener 所以我們需要構(gòu)造一個(gè)addActionListener MyActionListener myActionListener = new MyActionListener(); button.addActionListener(myActionListener); frame.add(button, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); WindownClose(frame);//調(diào)用關(guān)閉窗口 } //關(guān)閉窗口事件 private static void WindownClose(Frame frame) { frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } //事件監(jiān)聽(tīng) class MyActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { System.out.println("66666!"); } }

      public static void main(String[] args) { //兩個(gè)按鈕實(shí)現(xiàn)同一個(gè)監(jiān)聽(tīng) //開(kāi)始----停止 Frame frame = new Frame("開(kāi)始-停止"); Button button1 = new Button("start"); Button button2 = new Button("stop"); //可以顯示的定義觸發(fā)會(huì)返回命令,如果不顯示定義,則會(huì)走默認(rèn)的值 //可以多個(gè)按鈕只寫(xiě)一個(gè)監(jiān)聽(tīng)類 button2.setActionCommand("stop"); MyMonitor myMonitor = new MyMonitor(); button1.addActionListener(myMonitor); button2.addActionListener(myMonitor); frame.add(button1,BorderLayout.NORTH); frame.add(button2,BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); } class MyMonitor implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { //e.getActionCommand()獲取按鈕上的信息 System.out.println("按鈕被點(diǎn)擊了:msg=>"+ e.getActionCommand()); if(e.getActionCommand().equals("start")){ } } }

      public static void main(String[] args) { //main里只管啟動(dòng) new MyFrame2(); } class MyFrame2 extends Frame{ public MyFrame2(){ TextField textField = new TextField(); //因?yàn)閑xtends Frame 所有Frame可以不用寫(xiě) add(textField); //監(jiān)聽(tīng)這個(gè)文本框輸入的文字 MyActionListener2 myActionListener2 = new MyActionListener2(); //按鈕下回車就會(huì)觸發(fā)這個(gè)輸入框的事件 textField.addActionListener(myActionListener2); //設(shè)置編碼 textField.setEchoChar('*');//密碼框 setVisible(true); pack(); } } class MyActionListener2 implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { TextField field=(TextField)e.getSource();//獲得一些資源,返回一個(gè)對(duì)象 System.out.println(field.getText());//獲得輸入框文本 field.setText""); //不能NULL } }

      面向過(guò)程

      public static void main(String[] args) { new Calculator(); } } //計(jì)算器類 class Calculator extends Frame{ public Calculator() { //3個(gè)文本框 TextField num1 = new TextField(10);//字符數(shù) TextField num2 = new TextField(10);//字符數(shù) TextField num3= new TextField(20);//字符數(shù) //1個(gè)按鈕 Button button = new Button("="); //監(jiān)聽(tīng) button.addActionListener(new MyCalculatorListener(num1,num2,num3 )); //1個(gè)標(biāo)簽 Label label = new Label("+"); //布局 setLayout(new FlowLayout()); add(num1); add(label); add(num2); add(button); add(num3); pack(); setVisible(true); } } //-類 class MyCalculatorListener implements ActionListener{ //獲取三個(gè)變量 private TextField num1,num2,num3;//需要在這也寫(xiě)這個(gè) public MyCalculatorListener( TextField num1, TextField num2, TextField num3){ this.num1 = num1; this.num2 = num2; this.num3 = num3; } public void actionPerformed(ActionEvent e) { //1.獲得加數(shù)和被加數(shù) int n1 = Integer.parseInt(num1.getText());//將字符串類型轉(zhuǎn)換為int類型 int n2 = Integer.parseInt(num2.getText()); //2.將這個(gè)值加法運(yùn)算后放入第三個(gè)框中 num3.setText(""+(n1+n2)); //3.清除前兩個(gè)框的內(nèi)容 num1.setText(""); num2.setText(""); } }

      面向?qū)ο?/p>

      public static void main(String[] args) { new Calculator().loadFrame(); } //計(jì)算器類 class Calculator extends Frame{ //屬性 TextField num1,num2,num3; //方法 public void loadFrame(){ num1 = new TextField(10); num2 = new TextField(10); num3= new TextField(20); Button button = new Button("="); Label label = new Label("+"); button.addActionListener(new MyCalculatorListener(this)); setLayout(new FlowLayout()); add(num1); add(label); add(num2); add(button); add(num3); pack(); setVisible(true); } } //-類 class MyCalculatorListener implements ActionListener{ //獲取計(jì)算器這個(gè)對(duì)象,在一個(gè)類中組合另外一個(gè)類 Calculator calculator=null; public MyCalculatorListener(Calculator calculator){ this.calculator=calculator; } @Override public void actionPerformed(ActionEvent e) { //1.獲得加數(shù)和被加數(shù) int n1=Integer.parseInt(calculator.num1.getText()); int n2=Integer.parseInt(calculator.num2.getText()); //2.將這個(gè)值加法運(yùn)算后放入第三個(gè)框中 calculator.num3.setText(""+(n1+n2)); //3.清除前兩個(gè)框的內(nèi)容 calculator.num1.setText(""); calculator.num2.setText(""); } }

      內(nèi)部類:更好的包裝

      public static void main(String[] args) { new Calculator().loadFrame(); } //計(jì)算器類 class Calculator extends Frame{ //屬性 TextField num1,num2,num3; //方法 public void loadFrame(){ num1 = new TextField(10); num2 = new TextField(10); num3= new TextField(20); Button button = new Button("="); Label label = new Label("+"); button.addActionListener(new MyCalculatorListener()); setLayout(new FlowLayout()); add(num1); add(label); add(num2); add(button); add(num3); pack(); setVisible(true); } //-類 //內(nèi)部類最大的好處就是可以暢通無(wú)阻的訪問(wèn)外部的屬性和方法 private class MyCalculatorListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { //1.獲得加數(shù)和被加數(shù) int n1=Integer.parseInt(num1.getText()); int n2=Integer.parseInt(num2.getText()); //2.將這個(gè)值加法運(yùn)算后放入第三個(gè)框中 num3.setText(""+(n1+n2)); //3.清除前兩個(gè)框的內(nèi)容 num1.setText(""); num2.setText(""); } } }

      public static void main(String[] args) { new MyPaint().loadFrame(); } class MyPaint extends Frame{ public void loadFrame(){ setBounds(200,200,600,400); setVisible(true); } //畫(huà)筆 @Override public void paint(Graphics g) { //畫(huà)筆,需要有顏色,可以畫(huà)畫(huà) g.setColor(Color.red); g.drawOval(100,100,100,100); g.fillOval(100,100,100,100);//實(shí)心圓 g.setColor(Color.green); g.fillRect(150,150,100,100);//四邊形 //畫(huà)筆用完,還原到最初的顏色 } }

      public static void main(String[] args) { new MyFrame("畫(huà)圖"); } class MyFrame extends Frame { //畫(huà)畫(huà)需要畫(huà)筆,需要監(jiān)聽(tīng)鼠標(biāo)當(dāng)前的位置,需要集合來(lái)存儲(chǔ)畫(huà)出來(lái)的東西 ArrayList points; public MyFrame(String title) { super(title); setBounds(200, 200, 400, 400); //存儲(chǔ)鼠標(biāo)點(diǎn)擊的點(diǎn) points = new ArrayList<>(); setVisible(true); //鼠標(biāo)-,針對(duì)窗口 this.addMouseListener(new MyMouseListener()); } //畫(huà)畫(huà)需要重寫(xiě)畫(huà)筆 @Override public void paint(Graphics g) { //畫(huà)畫(huà)、需要監(jiān)聽(tīng)鼠標(biāo)事件 Iterator iterator = points.iterator(); while (iterator.hasNext()) { Point point = (Point) iterator.next(); g.setColor(Color.red); g.fillOval(point.x, point.y, 10, 10); } } //添加點(diǎn)到界面上 public void addPaint(Point point){ points.add(point); } //適配器模式 private class MyMouseListener extends MouseAdapter { //鼠標(biāo)按下 彈起 按住不放 public void mousePressed(MouseEvent e) { MyFrame frame = (MyFrame) e.getSource(); //這里我們點(diǎn)擊的時(shí)候,就會(huì)在界面上產(chǎn)生一個(gè)點(diǎn)-->畫(huà) frame.addPaint(new Point(e.getX(), e.getY())); //這個(gè)點(diǎn)就是鼠標(biāo)的點(diǎn) //每次點(diǎn)擊鼠標(biāo) 都需要重寫(xiě)畫(huà)一遍 frame.repaint();//刷新 } } }

      //鼠標(biāo)監(jiān)聽(tīng)事件 public static void main(String[] args) { new WindowFrame(); } class WindowFrame extends Frame { public WindowFrame() { setBounds(100, 100, 200, 200); setBackground(Color.GREEN); setVisible(true); //addWindowListener(new MyWindownListener()); this.addWindowListener( //匿名內(nèi)部類 new WindowAdapter() { @Override public void windowOpened(WindowEvent e) { System.out.println("windowOpened"); } //關(guān)閉窗口 @Override public void windowClosing(WindowEvent e) { System.out.println("windowClosing"); System.exit(0); } @Override public void windowClosed(WindowEvent e) { System.out.println("windowClosed"); } //激活窗口 @Override public void windowActivated(WindowEvent e) { WindowFrame source = (WindowFrame) e.getSource(); source.setTitle("被激活了"); System.out.println("windowActivated"); } } ); } }

      public static void main(String[] args) { new KeyFrame(); } class KeyFrame extends Frame{ public KeyFrame() { setBounds(1, 2, 300, 400); setVisible(true); this.addKeyListener(new KeyAdapter() { //鍵盤(pán)按下 @Override public void keyPressed(KeyEvent e) { //鍵盤(pán)按下的鍵是哪一個(gè) int keyCode = e.getKeyCode();//獲取當(dāng)前鍵盤(pán)的碼 System.out.println(keyCode); //不需要記住,直接使用VK_XXX if (keyCode==KeyEvent.VK_UP){ System.out.println("你按下了上鍵"); } //根據(jù)按下的鍵,產(chǎn)生不同的結(jié)果 } }); } }

      3、Swing

      public static void main(String[] args) { new MyJFrame2().init(); } class MyJFrame2 extends JFrame{ public void init(){ this.setBounds(100,100,200,200); this.setVisible(true); JLabel label = new JLabel("歡迎學(xué)習(xí)Java"); this.add(label); //讓文本標(biāo)簽居中 設(shè)置水平對(duì)齊 label.setHorizontalAlignment(SwingConstants.CENTER); //獲得一個(gè)容器 Container content = this.getContentPane(); content.setBackground(Color.cyan); } }

      JDialog,用來(lái)被彈出,默認(rèn)就有關(guān)閉窗口事件

      public class DialogDemo extends JFrame{ public DialogDemo() { this.setVisible(true); this.setSize(700,500); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //JFrame 放東西---需要容器 Container container = this.getContentPane(); //絕對(duì)布局 container.setLayout(null); //按鈕 JButton button = new JButton("點(diǎn)擊彈出對(duì)話框"); button.setBounds(30,30,200,50); //點(diǎn)擊這個(gè)按鈕的時(shí)候,彈出一個(gè)彈窗(監(jiān)聽(tīng)) button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //彈窗 new MyDailogDemo(); } }); container.add(button); } public static void main(String[] args) { new DialogDemo(); } //彈窗的窗口 class MyDailogDemo extends JDialog{ public MyDailogDemo() { this.setVisible(true); this.setBounds(100,100,500,500); //this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 默認(rèn)已有這個(gè)功能 Container container = this.getContentPane(); //設(shè)置為決定定位 container.setLayout(null); container.add(new Label("歡迎學(xué)習(xí)Java!")); } }

      public class ImageIconDemo extends JFrame { public ImageIconDemo(){ //獲取圖片地址 JLabel label = new JLabel("ImageIcon"); URL url = ImageIconDemo.class.getResource("tx.png"); ImageIcon imageIcon = new ImageIcon(url);//命名不要重復(fù) label.setIcon(imageIcon); label.setHorizontalAlignment(SwingConstants.CENTER); Container container = getContentPane(); container.add(label); setVisible(true); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setBounds(100,100,200,200); } public static void main(String[] args) { new ImageIconDemo(); } }

      JPanel

      public class JPanelDemo extends JFrame { public JPanelDemo(){ //所有的東西放在container里邊 Container container = this.getContentPane(); container.setLayout(new GridLayout(2,1,10,10));//后面參數(shù)的意思是間距 JPanel panel1 = new JPanel(new GridLayout(1,3)); JPanel panel2 = new JPanel(new GridLayout(1,2)); JPanel panel3 = new JPanel(new GridLayout(2,1)); JPanel panel4 = new JPanel(new GridLayout(3,2)); panel1.add(new JButton("1")); panel1.add(new JButton("1")); panel1.add(new JButton("1")); panel2.add(new JButton("2")); panel2.add(new JButton("2")); panel3.add(new JButton("3")); panel3.add(new JButton("3")); panel4.add(new JButton("4")); panel4.add(new JButton("4")); panel4.add(new JButton("4")); panel4.add(new JButton("4")); panel4.add(new JButton("4")); panel4.add(new JButton("4")); container.add(panel1); container.add(panel2); container.add(panel3); container.add(panel4); this.setVisible(true); this.setSize(500,500); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JPanelDemo(); } }

      JScrollPanel:

      public class JScrollDemo extends JFrame { public JScrollDemo(){ Container container = this.getContentPane(); //文本域 JTextArea textArea=new JTextArea(20,20); textArea.setText("歡迎學(xué)習(xí)Java"); //Scroll面板 JScrollPane scrollPane = new JScrollPane(textArea); container.add(scrollPane); this.setVisible(true); this.setBounds(100,100,300,350); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JScrollDemo(); } }

      圖片按鈕

      public class JButtonDemo extends JFrame { public JButtonDemo(){ Container container = this.getContentPane(); //將一個(gè)圖片變?yōu)閳D標(biāo) URL resource = JButtonDemo.class.getResource("tx.png"); Icon icon = new ImageIcon(resource); //把這個(gè)圖片放在按鈕上 JButton button = new JButton(); button.setIcon(icon); button.setToolTipText("圖片按鈕"); //add container.add(button); this.setVisible(true); this.setSize(500,300); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JButtonDemo(); } }

      單選按鈕

      public class JButtonDemo02 extends JFrame { public JButtonDemo02(){ Container container = this.getContentPane(); //將一個(gè)圖片變?yōu)閳D標(biāo) URL resource = JButtonDemo.class.getResource("tx.png"); Icon icon = new ImageIcon(resource); //單選框 JRadioButton radiobutton01 = new JRadioButton("單選框1"); JRadioButton radiobutton02 = new JRadioButton("單選框2"); JRadioButton radiobutton03 = new JRadioButton("單選框3"); //由于單選框只能選擇一個(gè),需要分組---一個(gè)組中只能選擇一個(gè) ButtonGroup ground = new ButtonGroup(); ground.add(radiobutton01); ground.add(radiobutton02); ground.add(radiobutton03); container.add(radiobutton01,BorderLayout.CENTER); container.add(radiobutton02,BorderLayout.NORTH); container.add(radiobutton03,BorderLayout.SOUTH); this.setVisible(true); this.setSize(500,300); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JButtonDemo02(); } }

      復(fù)選按鈕

      public class JButtonDemo03 extends JFrame { public JButtonDemo03(){ Container container = this.getContentPane(); //將一個(gè)圖片變?yōu)閳D標(biāo) URL resource = JButtonDemo.class.getResource("tx.png"); Icon icon = new ImageIcon(resource); //多選框 JCheckBox checkBox01 = new JCheckBox(" checkBox01"); JCheckBox checkBox02 = new JCheckBox(" checkBox02"); container.add(checkBox01,BorderLayout.NORTH); container.add(checkBox02,BorderLayout.SOUTH); this.setVisible(true); this.setSize(500,300); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JButtonDemo03(); } }

      下拉框

      public class TestComboboxDemo01 extends JFrame { public TestComboboxDemo01(){ Container container = this.getContentPane(); JComboBox status = new JComboBox<>(); status.addItem(null); status.addItem("正在熱映"); status.addItem("已下架"); status.addItem("即將上映"); container.add(status); this.setVisible(true); this.setSize(500,350); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestComboboxDemo01(); } }

      列表框

      public class TestComboboxDemo02 extends JFrame { public TestComboboxDemo02() { Container container = this.getContentPane(); //生成列表內(nèi)容 //String[] contents={"1","2","3"}; Vector contents = new Vector(); //列表中需要放入內(nèi)容 JList jList = new JList(contents); contents.add("1"); contents.add("2"); contents.add("3"); container.add(jList); this.setVisible(true); this.setSize(500,300); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestComboboxDemo02(); } }

      應(yīng)用場(chǎng)景:

      選擇地區(qū)或者一些單個(gè)選項(xiàng)

      列表,展示信息,一般是動(dòng)態(tài)內(nèi)容

      文本框

      public class TestTextDemo01 extends JFrame { public TestTextDemo01 (){ Container container = this.getContentPane(); //container.setLayout(null);//絕對(duì)布局 JTextField textField = new JTextField("hellow"); JTextField textField2 = new JTextField("world",20); container.add(textField,BorderLayout.NORTH); container.add(textField2,BorderLayout.SOUTH); this.setVisible(true); this.setSize(500,350); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestTextDemo01 (); } }

      密碼框

      public class TestTextDemo02 extends JFrame { public TestTextDemo02 (){ Container container = this.getContentPane(); //密碼框 JPasswordField passwordField = new JPasswordField();//**** passwordField.setEchoChar('*'); container.add(passwordField); this.setVisible(true); this.setSize(500,350); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestTextDemo02 (); } }

      文本域

      public class JScrollDemo extends JFrame { public JScrollDemo(){ Container container = this.getContentPane(); //文本域 JTextArea textArea=new JTextArea(20,20); textArea.setText("歡迎學(xué)習(xí)Java"); //Scroll面板 JScrollPane scrollPane = new JScrollPane(textArea); container.add(scrollPane); this.setVisible(true); this.setBounds(100,100,300,350); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { new JScrollDemo(); } }

      GUI Java 容器

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:WPS表格如何解除宏禁用(wps2016宏解除禁用方法)
      下一篇:數(shù)據(jù)分析流程是什么?
      相關(guān)文章
      亚洲一区二区三区写真 | 亚洲精品成人区在线观看| 456亚洲人成在线播放网站| 精品亚洲成a人片在线观看少妇| 国产V亚洲V天堂A无码| 久久亚洲成a人片| 亚洲国产精品久久久久| 久久久亚洲欧洲日产国码二区| 亚洲成人免费在线| 99ri精品国产亚洲| 亚洲春色在线观看| 亚洲伊人久久大香线蕉啊| 亚洲人成在线精品| 国内精品久久久久影院亚洲 | 亚洲最大中文字幕无码网站| 最新亚洲精品国偷自产在线| 亚洲精品无AMM毛片| WWW亚洲色大成网络.COM| 综合一区自拍亚洲综合图区| 亚洲国产av无码精品| 久久99亚洲综合精品首页| 亚洲色无码一区二区三区| 亚洲AV综合色区无码一区| 久久久无码精品亚洲日韩按摩 | 亚洲精品在线视频| 亚洲精品无码久久久久去q| 亚洲国产综合专区在线电影| 亚洲美女人黄网成人女| 国产精品亚洲四区在线观看| 亚洲国产欧美一区二区三区| 国产亚洲漂亮白嫩美女在线| 亚洲永久精品ww47| 亚洲第一福利网站| 亚洲性69影院在线观看| 在线观看亚洲AV日韩A∨| 337P日本欧洲亚洲大胆精品| 亚洲人成无码网WWW| 亚洲精品国产美女久久久| 精品无码一区二区三区亚洲桃色 | 亚洲午夜精品第一区二区8050| 久久亚洲国产午夜精品理论片|