2011-12-04 13 views
9

मैं जॉप्शनपेन में बहुत से परिणाम जेएलिस्ट करना चाहता हूं, हालांकि, मुझे यकीन नहीं है कि स्क्रॉल फ़ंक्शन में कैसे जोड़ना चाहिए, वहां बहुत सारे परिणाम होने चाहिए। मैं जॉप्शनपेन में स्क्रॉल बार कैसे जोड़ूं? कोई भी मदद बहुत अच्छी रहेगी।जॉप्शनपेन और स्क्रॉल फ़ंक्शन

धन्यवाद।

उत्तर

22

यहाँ एक उदाहरण का उपयोग करते हुए एक JTextArea एक JScrollPane में एम्बेडेड है: मैं एक ऐसी ही जरूरत है, एक स्क्रॉल के साथ एक JOptionPane था

JTextArea textArea = new JTextArea("Insert your Text here"); 
JScrollPane scrollPane = new JScrollPane(textArea); 
textArea.setLineWrap(true); 
textArea.setWrapStyleWord(true); 
scrollPane.setPreferredSize(new Dimension(500, 500)); 
JOptionPane.showMessageDialog(null, scrollPane, "dialog test with textarea", 
             JOptionPane.YES_NO_OPTION); 
+0

JList है कि परिवर्तित करें :-) – mKorbel

+0

@AndrewThompson सहमत एक showMessageDialog इस स्थिति के लिए अधिक उपयुक्त है। – GETah

+0

@mKorbel हां, एक जेएलिस्ट को भी यह करना चाहिए। यहां प्रदान किया गया उदाहरण केवल मार्गदर्शन के लिए है। – GETah

4

ऑब्जेक्ट्स को JList या अन्य ऐसे घटक में रखें, इसे JScrollPane में छोड़ दें, और JScrollPane को JOptionPane में रखें।

0

TextArea कि मेरे आवेदन में से मेरी कक्षाओं में से कोई भी लिख सकता है। यह उपयोगकर्ता को स्थिति और प्रगति की जानकारी प्रदान करना था। मेरा दृष्टिकोण यह एक स्थिर वर्ग बनाना था जिसे मैंने एक बार तुरंत चालू किया और कोई वर्ग इसे लिखने के लिए अपनी अद्यतन विधि कह सकता था। आशा है कि कोड में एक छोटा सा ड्राइवर होगा और यह समय बचाएगा। यह स्थैतिक नहीं बनाया जा सकता है, जो सिर्फ मेरी जरूरतों के अनुरूप है।

package com.acme.view; 

import java.awt.EventQueue; 
import javax.swing.JFrame; 
import javax.swing.JButton; 
import java.awt.BorderLayout; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 

import com.acme.controller.MyController; 
import com.acme.utils.NonModalMessage; 

public class MyView { 

    private JFrame frame; 
    private int dialogNum = 0; 
    private MyController myCntrlr; 
    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     NonModalMessage.createMesgDialog(); 
     NonModalMessage.updateMessage("Acme Anvil Targeting Progress"); 

     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        MyView window = new MyView(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the application. 
    */ 
    public MyView() { 
     initialize(); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 
    private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 250, 200); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     myCntrlr = new MyController(); 

     JButton btnMybutton = new JButton("myButton"); 

     btnMybutton.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent e) { 
       NonModalMessage.setMessageVisible(); 
       if(dialogNum > 0 && dialogNum % 10 == 0){ 
        NonModalMessage.clearMessage(); 
        NonModalMessage.updateMessage("Acme Anvil Targeting Progress"); 
        myCntrlr.someMethod("Controller reports Roadrunner sighted. Message Number: ", dialogNum); 
       } 
       NonModalMessage.getMessage(); 

       NonModalMessage.updateMessage("Message number: " + Integer.toString(dialogNum)); 
       System.out.println("dialogNum: " + dialogNum); 
       dialogNum++; 
      } 
     }); 

     frame.getContentPane().add(btnMybutton, BorderLayout.NORTH); 
    } 


} 

package com.acme.controller; 
import com.acme.utils.NonModalMessage; 

public class MyController { 

    public MyController(){ 

    } 

    public void someMethod(String mystring, int myInt){ 
     NonModalMessage.updateMessage(mystring + " "+ myInt); 
    } 

} 

package com.acme.utils; 
import javax.swing.JDialog; 
import javax.swing.JOptionPane; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.ScrollPaneConstants; 

public class NonModalMessage { 
    private static JTextArea textArea = null; 
    private static JOptionPane oPane = null; 
    private static JDialog dialog  = null; 
    private static JScrollPane myjsPane = null; 
    public NonModalMessage(){} 

    public static void createMesgDialog(){ 

     textArea = new JTextArea(); 
     textArea.setLineWrap(true); 
     textArea.setWrapStyleWord(true); 
     myjsPane = new JScrollPane(textArea); 
     myjsPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 

     oPane = new JOptionPane(); 
     oPane.add(myjsPane);  

     //final JDialog dialog = pane.createDialog(myPane, "Progress Dialog"); 
     dialog = oPane.createDialog(null, ""); 
     dialog.setTitle("Progress Messages"); 
     dialog.setModal(false); 
     dialog.setSize(400, 250); 
     dialog.setResizable(true); 
     dialog.setAlwaysOnTop(true); 
    } 

    public static void setMessageVisible(){ 
     dialog.setVisible(true); 
    } 

    public static void updateMessage(String newMessage){ 
     String mytext = textArea.getText(); 
     if(mytext.isEmpty()){ 
      textArea.setText(newMessage); 
     } 
     else{ 
      textArea.setText(mytext + "\n" + newMessage); 
     } 

     oPane.setMessage(myjsPane); 
    } 
    public static String getMessage(){ 
     return textArea.getText(); 
    } 

    public static void clearMessage(){ 
     textArea.setText(""); 
     oPane.setMessage(myjsPane); 
    } 

}