2014-01-21 2 views
0

Я пытаюсь добавить слайдер в свой графический интерфейс, но он не появится, я новичок в java, поэтому, если бы вы могли помочь, это было бы очень признательно! Я не уверен, как добавить слайдер в основную сетку, на данный момент он не появляется.Jslider не появится в сетке

import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 
import java.io.*; 
import javax.swing.*; 



public class Grid extends JFrame 
{ 
public void Slider() 
{ 
    setLayout(new FlowLayout()); 
    JSlider slider; 
    JLabel label; 

    slider = new JSlider(JSlider.VERTICAL, 0, 20, 0); 
    slider.setMajorTickSpacing(5); 
    slider.setPaintTicks(true); 
    add(slider); 

    label = new JLabel ("Number of lifeforms: 0"); 
    add(label); 

} 

public static void main (String args[]) 
    { 
    JFrame Grid = new JFrame(); 
    Grid.setSize(800,600); 
    Grid.setTitle("Artificial life simulator"); 
    Grid.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    String rows = JOptionPane.showInputDialog("How many rows does the grid have?"); 
    int row = Integer.parseInt(rows); 

    String columns = JOptionPane.showInputDialog("How many columns does the grid have?"); 
    int col = Integer.parseInt(columns); 

    JOptionPane.showConfirmDialog(null, "Are these the correct demensions: " 
    +row+" x "+col+ "?", 
    "Yes or No", JOptionPane.YES_NO_OPTION); 


    Container pane = Grid.getContentPane(); 
    pane.setLayout(new GridLayout(row,col)); 

    Color square; 

    for (int x = 1; x <=(row*col); x++) 
    { 
    int altr = 0; 
    altr = (x-1) % col; 
    altr += (x-1)/col; 

    if (altr % 2 == 0) 
    { 
     square = Color.white; 
    } 

    else 
    { 
     square = Color.black; 
    } 

    JPanel panel = new JPanel(); 
    panel.setPreferredSize(new Dimension(800/row, 600/col)); 
    panel.setBackground(square); 
    pane.add(panel); 
    } 
    Grid.setVisible(true); 

}}

+0

Anyone? Я попытался добавить строку Grid.Add (Slider); без успеха – user3357649

ответ

2

Примечание несколько изменений в вашем примере:

  • расположение по умолчанию JFrame является BorerLayout; вертикальный слайдер идет хорошо в EAST.

  • Метод slider() возвращает JSlider; ярлык может войти в одну из трех оставшихся областей BorerLayout.

  • Переопределить getPreferredSize(), чтобы определить размер области рендеринга.

  • TODO: См. Также Initial Threads.

image

Как испытываться:

import java.awt.*; 
import javax.swing.*; 

public class Grid extends JFrame { 

    private static JSlider slider() { 
     JSlider slider; 
     slider = new JSlider(JSlider.VERTICAL, 0, 20, 0); 
     slider.setMajorTickSpacing(5); 
     slider.setPaintTicks(true); 
     return slider; 
    } 

    public static void main(String args[]) { 
     JFrame grid = new JFrame(); 
     grid.setSize(800, 600); 
     grid.setTitle("Artificial life simulator"); 
     grid.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     int row = 3; 
     int col = 3; 

     JPanel pane = new JPanel(){ 

      @Override 
      public Dimension getPreferredSize() { 
       return new Dimension(320, 240); 
      } 
     }; 
     pane.setLayout(new GridLayout(row, col)); 
     Color square; 
     for (int x = 1; x <= (row * col); x++) { 
      int altr = 0; 
      altr = (x - 1) % col; 
      altr += (x - 1)/col; 

      if (altr % 2 == 0) { 
       square = Color.white; 
      } else { 
       square = Color.black; 
      } 
      JPanel panel = new JPanel(new GridLayout()); 
      panel.setBackground(square); 
      pane.add(panel); 
     } 
     grid.add(pane); 
     grid.add(slider(), BorderLayout.EAST); 
     grid.pack(); 
     grid.setVisible(true); 
    } 
} 
+0

Спасибо за это :) Если бы я хотел добавить Jabel в слайдер, как бы я это сделал? я пытался .. частный статический слайдер JSlider() { JSlider slider; JLable label; слайдер = новый JSlider (JSlider.VERTICAL, 0, 20, 0); slider.setMajorTickSpacing (5); slider.setPaintTicks (true); int value = slider.getValue(); label = new JLabel («Текущее значение: 0»); добавить (отметить); label.setText ("Текущее значение:" + _value); задний ползунок; } – user3357649

+0

Добавьте метку и ползунок на панель, а затем добавьте эту панель в панель содержимого фрейма. Обновите свой вопрос, чтобы включить [* Минимальный, полный, действительный пример *] (http://stackoverflow.com/help/mcve), который показывает ваш текущий подход. – trashgod

Смежные вопросы