ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming[JAVA] จะนำค่าที่อยู่นอก public void{} เข้ามาใช้ได้ยังไงครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: [JAVA] จะนำค่าที่อยู่นอก public void{} เข้ามาใช้ได้ยังไงครับ  (อ่าน 808 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
DewChelsea
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 422



ดูรายละเอียด เว็บไซต์
« เมื่อ: 14 พฤษภาคม 2014, 16:34:40 »

protected void createContents() {   
               //Code Text Area
      TextViewer textViewer = new TextViewer(shell, SWT.BORDER);
      StyledText styledText = textViewer.getTextWidget();
      styledText.setText("ปปปปปปปปปปปป");
      styledText.setBounds(29, 55, 542, 180);
                //ค่่าที่หมายถึงคือ ตัวอักษรที่อยุ่ใน text area

Button btnNewButton = new Button(shell, SWT.NONE);
      btnNewButton.addSelectionListener(new SelectionAdapter() {
         public void widgetSelected(SelectionEvent e) {
                                
                              //styledText คือชื่อของ TextArea ครับ ซึ่งมันจะเออเร่อตรงที่ผม ไฮไลท์สีน้ำเงินไว้ เพราะ มันไม่สามารถ เรียกใช้ค่าที่อยุ่นอก  public void widgetSelected(SelectionEvent e) { ได้ครับ

            String split1 = styledText.getText();
            String[] splitt = split1.split(",");
            String url = splitt[0];
            String image = splitt[1];
            String title = splitt[2];
            String description = splitt[3];
            JOptionPane.showMessageDialog(null,url);
            JOptionPane.showMessageDialog(null,image);
            JOptionPane.showMessageDialog(null,title);
            JOptionPane.showMessageDialog(null,description);
      });
      btnNewButton.setBounds(52, 340, 93, 47);
      btnNewButton.setText("XML SQL");

คำถามคือ ผม จะเอาค่าที่อยุ่ข้างนอก public void widgetSelected(SelectionEvent e) {} เข้ามาใช้ได้ยังไงครับ  Embarrassed
« แก้ไขครั้งสุดท้าย: 14 พฤษภาคม 2014, 16:37:38 โดย DewChelsea » บันทึกการเข้า

Maxio
ก๊วนเสียว
*

พลังน้ำใจ: 49
ออฟไลน์ ออฟไลน์

กระทู้: 275



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 14 พฤษภาคม 2014, 16:54:17 »

Scope มันอยู่ตรงไหนอะครับ? โค๊ดดูยากมากเลย เอ่อ ผมไม่เคยเขียน Java GUI นะครับ แต่เข้าใจว่า น่าจะเป็นการใช้ Anonymous Inner Class คล้ายๆ Android คือมันจะไม่สามารถเข้าถึง field นอก scope ได้ครับ วิธีแก้ก็

-1 ประกาศ final ให้ styledText แต่ไม่ดีแน่เพราะว่า ต้องใช้มัน setText
-2 ประกาศเป็น Global member ในคลาส (ภายในคลาส ไม่ใช่ภายในเมธอด)

บันทึกการเข้า

DewChelsea
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 422



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 15 พฤษภาคม 2014, 01:09:43 »

Scope มันอยู่ตรงไหนอะครับ? โค๊ดดูยากมากเลย เอ่อ ผมไม่เคยเขียน Java GUI นะครับ แต่เข้าใจว่า น่าจะเป็นการใช้ Anonymous Inner Class คล้ายๆ Android คือมันจะไม่สามารถเข้าถึง field นอก scope ได้ครับ วิธีแก้ก็

-1 ประกาศ final ให้ styledText แต่ไม่ดีแน่เพราะว่า ต้องใช้มัน setText
-2 ประกาศเป็น Global member ในคลาส (ภายในคลาส ไม่ใช่ภายในเมธอด)



ขอบคุณครับ ผมลองแล้วมันไม่ได้อะครับ

protected void createContents() {
      shell = new Shell();
      shell.setBackground(SWTResourceManager.getColor(SWT.COLOR_LIST_BACKGROUND));
      shell.setSize(600, 437);
      shell.setText("SWT Application");
   
      TextViewer textViewer = new TextViewer(shell, SWT.BORDER);
      StyledText styledText = textViewer.getTextWidget();
      styledText.setText("");
      styledText.setBounds(29, 55, 542, 180);
      Global.styledText = styledText.getText();
      
      
      Button btnNewButton = new Button(shell, SWT.NONE);
      btnNewButton.addSelectionListener(new SelectionAdapter() {
         
         public void widgetSelected(SelectionEvent e) {
                                   จะนำค่าของ Text Area (styledText) มาใช้ในนี้อะครับ
}
บันทึกการเข้า

Maxio
ก๊วนเสียว
*

พลังน้ำใจ: 49
ออฟไลน์ ออฟไลน์

กระทู้: 275



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 15 พฤษภาคม 2014, 01:18:18 »

ตัวแปร Global ประกาศแบบนี้ครับ

public class YourClassBlahBlah {

    StyledText styledText = null;
    protected void createContents() {
            shell = new Shell();
            shell.setBackground(SWTResourceManager.getColor(SWT.COLOR_LIST_BACKGROUND));
            shell.setSize(600, 437);
            shell.setText("SWT Application");

            TextViewer textViewer = new TextViewer(shell, SWT.BORDER);
            StyledText styledText = textViewer.getTextWidget();
            styledText = textViewer.getTextWidget();
            styledText.setText("");
            styledText.setBounds(29, 55, 542, 180);
            Global.styledText = styledText.getText();


            Button btnNewButton = new Button(shell, SWT.NONE);
            btnNewButton.addSelectionListener(new SelectionAdapter() {

                public void widgetSelected(SelectionEvent e) {
                                       จะนำค่าของ Text Area (styledText) มาใช้ในนี้อะครับ
    }
}
บันทึกการเข้า

akkradet
ก๊วนเสียว
*

พลังน้ำใจ: 54
ออฟไลน์ ออฟไลน์

กระทู้: 394



ดูรายละเอียด
« ตอบ #4 เมื่อ: 15 พฤษภาคม 2014, 02:23:21 »

CODE ดูยากมากๆ  Tongue
บันทึกการเข้า

ว่างเปล่า
DewChelsea
ก๊วนเสียว
*

พลังน้ำใจ: 9
ออฟไลน์ ออฟไลน์

กระทู้: 422



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 15 พฤษภาคม 2014, 15:57:52 »

ขอบคุณครับ ประกาศ golbal แล้วได้จริงๆ ด้วยครับผม

ขอบคุณสำหรับความรุ้นัคร้าบบบบบ  Cry  wanwan012
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์