[JAVA] JScrollPane

0

Witam, chcialbyc dolaczyc do kontenera scrolla, tak aby w TextArea mozna zobaczyc cala prezentowana tresc. Ogolnie cos nie dziala, postepowalem zgodnie ze wskazaniami kilku zrodel, ale jak widac nie wychodzi. Oto kod programu:

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.colorchooser.*;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JTextArea;

public class Pierwsza extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JButton guzik_losuj = null;
	private JLabel label_wylosowana = null;
	private JTextField field_wylosowana = null;
	private JTextArea area_pokazalg = null;
	private JScrollPane sp = new JScrollPane(area_pokazalg);
	
	private JButton getGuzik_losuj() {
		if (guzik_losuj == null) {
			guzik_losuj = new JButton();
			guzik_losuj.setBounds(new Rectangle(30, 31, 153, 33));
			guzik_losuj.setText("Losuj liczbe");
			guzik_losuj.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					Zad2 liczba = new Zad2();
					field_wylosowana.setText(liczba.napis());
					Pierwsza u = new Pierwsza();
					u.przypisz(area_pokazalg);
					liczba.ok(u);
					// TODO Auto-generated Event stub actionPerformed()
				}
			});
		}
		return guzik_losuj;
	}


	private JTextField getField_wylosowana() {
		if (field_wylosowana == null) {
			field_wylosowana = new JTextField();
			field_wylosowana.setBounds(new Rectangle(378, 23, 72, 41));
			
		}
		return field_wylosowana;
	}

	
	private JTextArea getArea_pokazalg() {
		if (area_pokazalg == null) {
			area_pokazalg = new JTextArea();
			area_pokazalg.setBounds(new Rectangle(32, 79, 120, 75));
			
			
			
		}
		return area_pokazalg;
	}

	public void jest(String s)
	{
		area_pokazalg.setText(s);
	}
	
	public void przypisz(JTextArea siema)
	{
		area_pokazalg=siema;
	}
	
	public static void main(String[] args) {
	
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				Pierwsza thisClass = new Pierwsza();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
				
			}
		});
	}


	public Pierwsza() {
		super();
		initialize();
	}


	private void initialize() {
		this.setSize(600, 600);
		this.setContentPane(getJContentPane());
		this.setTitle("Program");
	}


	private JPanel getJContentPane() {
		if (jContentPane == null) {
			
			label_wylosowana = new JLabel();
			label_wylosowana.setBounds(new Rectangle(210, 33, 147, 19));
			label_wylosowana.setText("Wylosowana liczba:");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			
			jContentPane.add(getGuzik_losuj(), null);
			jContentPane.add(label_wylosowana, null);
			jContentPane.add(getField_wylosowana(), null);
			jContentPane.add(getArea_pokazalg(), null);
			jContentPane.add(sp, null); 
			
		}
		return jContentPane;
	}

}

class Zad2{
	private int liczba;
	
	Zad2()
	{
		liczba = (int)(Math.random()*15+2);
	}
	String napis()
	{
		String napis = new String();
		napis=String.valueOf(liczba);
		return napis;
	}
	void ok(Pierwsza d)
	{
		String napiss = new String();
		
		for(int licznik=1;liczba!=1;)
		{
			napiss=napiss + String.valueOf(licznik++);
			
			
			
			if((liczba%2)==0)
			{
				napiss+= ", " + String.valueOf(liczba);
				liczba/=2;
				napiss+= ", parzyste, " + String.valueOf(liczba) + "\n";
				
			}
			else
			{
				napiss+= ", " + String.valueOf(liczba);
				liczba=3*liczba+1;
				napiss+= ", parzyste, " + String.valueOf(liczba)+ "\n";
			}
		}
		d.jest(napiss);
	}
}
0

po pierwsze: zmień źródła z których korzystasz, takiego bałaganu dawno nie widziałem...tragedia;-]

pzdr.

tak na szybko, ale działa:

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.colorchooser.*;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JTextArea;

public class Pierwsza extends JFrame {

        private static final long serialVersionUID = 1L;
        private JButton guzik_losuj = null;
        private JLabel label_wylosowana = null;
        private JTextField field_wylosowana = null;
        private JTextArea area_pokazalg = null;
        private JScrollPane sp;
       
        public Pierwsza(){
        	super();
        	setSize(400, 400);
        	setLocation(300, 300);
        	
        	area_pokazalg = new JTextArea();
            area_pokazalg.setBounds(new Rectangle(32, 79, 120, 75));
            
            guzik_losuj = new JButton();
            guzik_losuj.setBounds(new Rectangle(30, 31, 153, 33));
            guzik_losuj.setText("Losuj liczbe");
                        
            field_wylosowana = new JTextField();
            field_wylosowana.setBounds(new Rectangle(378, 23, 72, 41));
                        
            sp= new JScrollPane(area_pokazalg);
            label_wylosowana = new JLabel();
            label_wylosowana.setBounds(new Rectangle(210, 33, 147, 19));
            label_wylosowana.setText("Wylosowana liczba:");
           
           
           
            Container c = getContentPane();
            c.setLayout(new GridLayout(3,3));
            c.add(guzik_losuj);
            c.add(label_wylosowana);
            c.add(field_wylosowana);
            c.add(new JPanel());
            c.add(new JPanel());
            c.add(new JPanel());
            c.add(sp);
            c.add(new JPanel());
            c.add(new JPanel());
            
            guzik_losuj.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                        Zad2 liczba = new Zad2();
                        field_wylosowana.setText(liczba.napis());
                        liczba.ok(Pierwsza.this);
                        // TODO Auto-generated Event stub actionPerformed()
                }
        });
     
        }
        

        public void jest(String s)
        {
                area_pokazalg.setText(s);
        }
       
        public void przypisz(JTextArea siema)
        {
                area_pokazalg=siema;
        }
       
        public static void main(String[] args) {
       
                SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                                Pierwsza thisClass = new Pierwsza();
                                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                thisClass.setVisible(true);
                               
                        }
                });
        }
}

class Zad2{
        private int liczba;
       
        Zad2()
        {
                liczba = (int)(Math.random()*15+2);
        }
        String napis()
        {
                String napis = new String();
                napis=String.valueOf(liczba);
                return napis;
        }
        void ok(Pierwsza d)
        {
                String napiss = new String();
               
                for(int licznik=1;liczba!=1;)
                {
                        napiss=napiss + String.valueOf(licznik++);
                       
                       
                       
                        if((liczba%2)==0)
                        {
                                napiss+= ", " + String.valueOf(liczba);
                                liczba/=2;
                                napiss+= ", parzyste, " + String.valueOf(liczba) + "\n";
                               
                        }
                        else
                        {
                                napiss+= ", " + String.valueOf(liczba);
                                liczba=3*liczba+1;
                                napiss+= ", parzyste, " + String.valueOf(liczba)+ "\n";
                        }
                }
                d.jest(napiss);
        }
}
0

No tak, obczailem to troche, i ogolnie z tym layoutem grid to dziala, jak u siebie pozmienialem, ale gdy nie nastawie zadnego layoutu, to znika caly textarea i pytanie teraz brzmi jak ustawic w textarea suwak, gdy layout jest ustawiony na null? ;p

0

Dobra mam, trzeba dopisac po stworzeniu obiektu scrollpane scrollPane.setBounds(new Rectangle(0, 0, 297, 197)); lub jak tam sie swoje wymiary ma.

1 użytkowników online, w tym zalogowanych: 0, gości: 1