java_kila pytań o panel i button

0

Witam
nie wiem czy dobrze piszę zakładając nowy post
mam problem
umieściłem wszystkie kody ascii w osobnych button (przyciskach), następnie
powiększyłem czcionkę oraz zmieniłem kolor czcionki.
wszystko mieści się w JPanelu
tylko jest taki problem, że nie wszystkie przyciski zmieściły się na ekranie

moje pytanie
1.
chce dodać pasek przewijania, żeby widzieć niższe przyciski
tylko nie wiem jakiej komendy użyć
czy użyć JScrollPane, wiem, że w panelu nie da się umieścić JScrollPane
tak mi się wydaje.
1a. czy przyciski umieścić w label lub innym komponencie
prosiłbym o poradę

  1. mam w panelu 1 "szyfra"
    label1 (napis) oraz button (przyciski)
    pyta takie
    jak zrobić, żeby label1 (napis) był na środku panelu, a button (przyciski) w linijce niżej.
    bo teraz label1 (napis) oraz button (przyciski) mam koło siebie w jednej linijce

  2. chce zrobić, żeby button (przyciski) były w tej samej linii w pionie jak i poziomie nieporozwalane tylko nie wiem czy mam stworzyć nowy panel czy jest jakaś inna komenda

podaje kod

Java:

public void szyfr()
 {
       JPanel szyfra = new JPanel();
       szyfra.setBorder(BorderFactory.createTitledBorder( lower, "szyfra"));
    // mierzenie wysokości
       szyfra.setMinimumSize( new Dimension( 0, 750 ) );
       // kolor tła
        szyfra.setBackground( Color.black );
         
               
       JPanel wyjscie = new JPanel();
       wyjscie.setBorder(BorderFactory.createTitledBorder( lower, "wyjscie"));
      // panel label szyfr
        JLabel label1 = new JLabel("Wybierz_kod_ASCII_do_zaszyfrowania");
        // kolor czcionki
        label1.setForeground( Color.red );
        // styl i wielkość czcionki
        label1.setFont( new Font( "", Font.BOLD, 20 ) );
       
         // panel label wyjscie
        JLabel label2 = new JLabel("przycisk_wyjscie");
        JLabel kod_ASCII = new JLabel();
 
        szyfra.add(label1);
        wyjscie.add(label2);
   
        JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, szyfra, wyjscie);
 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
         
        setLayout(new GridLayout(2, 6)); 
   
       Button przycisk = new Button("Wyjście");
       
       final JFrame f =new JFrame();
       f.setTitle("Szyfr");

     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
      f.setBounds(0,0,screenSize.width, screenSize.height);

      splitPane.setOneTouchExpandable(true);
      f.getContentPane().add(splitPane);
      f.setVisible(true);
       
      // panel 1 szyfra
      for(char i=32; i<805; i++)
      {
           
      JButton bb = new JButton("" + i);
      bb.addActionListener(this);
       szyfra.add(bb);
         // kolor czcionki
        bb.setForeground( Color.red );
        // styl i wielkość czcionki
        bb.setFont( new Font( "", Font.BOLD, 20 ) );

      }
       
      // panel 2  wyjscie
   
        wyjscie.add(przycisk);
       
 przycisk.addActionListener(
     new ActionListener() {
     public void actionPerformed(ActionEvent e) {
   
     f.setVisible (false);
       }
         }
           ); 
 }

dziękuje za odpowiedz

1
  1. Utwórz scrollPane podając jako parametr konstruktora obiekt JPanel.
    1.a Umieść je normalnie na JPanel
  2. Poczytaj o LayoutManager
  3. jw
0

Witam
zdanie
"nie wiem czy dobrze pisze w tym poście" chodzi o to, że zakładałem już temat o podobnym temacie


  public void b() 
 {
       JPanel a = new JPanel(new BorderLayout(553,553));
     a.setBorder(BorderFactory.createTitledBorder( lower, "szyfra"));
       
       JPanel b = new JPanel();
       b.setBorder(BorderFactory.createTitledBorder( lower, "wyjscie"));
      // panel label szyfr
        JLabel d = new JLabel("Wybierz_kod_ASCIfdgsdggdgdfgergersgershehetrethetretrhtrI_fdfdo_zaszyfrowania");
         // panel label wyjscie
        JLabel c = new JLabel("Wybierz_kod_ASCII_do_ehtreherhrehrehrehrehrherherhrhreherhreherhehezaszyfrowania");
        // kolor czcionki
        c.setForeground( Color.red );
        // styl i wielkość czcionki
        c.setFont( new Font( "", Font.BOLD, 20 ) );
   
     
        JScrollPane s = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
     //   JScrollPane ss = new JScrollPane(b, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
       // JScrollPane sss = new JScrollPane();
        
        
        this.getContentPane().add(s, BorderLayout.CENTER);  
 
        for(char i=32; i<805; i++) 
        {
           
        JButton bb = new JButton("" + i);
        bb.addActionListener(this);
        a.add(bb);
         // kolor czcionki
        bb.setForeground( Color.red );
        // styl i wielkość czcionki
        bb.setFont( new Font( "", Font.BOLD, 20 ) );
         
   
        }
    
       JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, a, b);
  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
       
        
       Button przycisk = new Button("Wyjście"); 
       
       final JFrame f =new JFrame();
       f.setTitle("Szyfr");
 
       f.setSize(500, 500);  
        f.setLocation(200,200); 
      
     f.add(przycisk);
  
      splitPane.setOneTouchExpandable(true);
             

    f.getContentPane().add(splitPane);
  
 
      
     
      a.add(d);
   
       a.add(c); 
       a.add(s); 
       
        f.setVisible(true);
 przycisk.addActionListener(
     new ActionListener() {
     public void actionPerformed(ActionEvent e) {
    
     f.setVisible (false);
       }
         }
           );  
 } 




mam problem dodałem do kodu
JScroll
program się kompiluje i Scroll jest widoczny, tylko nic poza tym nie ma nie wyświetla tekstu,
gdy przesunę

a.add(s);

linijkę wyżej
przed

 a.add(c); 

to tekst jest widoczny, ale nie ma scroll

nie wiem co mam zrobić proszę o pomoc dziękuje

0

z tego co widze nie dodałes nic do środka scrollpane.
dodaj to co chcesz przesuwac do scrollpane a następnie do panelu caly scroolpane

0

W JFrame domyślnym menadżerem rozkładu jest BorderLayout, komponenty należy wówczas dodawać tak: add(komponent,gdzie). Jeśli pominiesz argument gdzie, to komponent zostanie dodany w centrum.

add(komp1);
add(komp2);

widać tylko komp2 (w centrum).

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