2014-01-21 40 views
0

我想添加一個滑塊到我的GUI,但它不會出現,我是新來的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

有人嗎?我試着添加一行Grid.Add(Slider);沒有成功 – user3357649

回答

2

注意一些改變你的例子:

  • JFrame的默認佈局是BorerLayout;垂直滑塊在EAST中很順利。

  • slider()方法返回JSlider;該標籤可以進入其餘三個BorerLayout區域中的一個。

  • 重寫getPreferredSize()來定義呈現窗格的大小。請參閱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滑塊; JLable標籤; slider = new JSlider(JSlider.VERTICAL,0,20,0); slider.setMajorTickSpacing(5); slider.setPaintTicks(true); int value = slider.getValue(); label = new JLabel(「當前值:0」); add(label); label.setText(「當前值:」+ _value); 返回滑塊; } – user3357649

+0

將標籤和滑塊添加到面板,然後將該面板添加到框架的內容窗格。更新您的問題以包含顯示您當前方法的[* Minimal,Complete,Valid Example *](http://stackoverflow.com/help/mcve)。 – trashgod