2014-01-21 2 views
0

내 GUI에 슬라이더를 추가하려하지만 표시되지 않습니다. 자바에 익숙하지 않으므로 도움이된다면 많은 도움이 될 것입니다! 슬라이더를 주 그리드에 추가하는 방법을 모르겠습니다. 순간에는 나타나지 않습니다. 귀하의 예에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()을 재정의하십시오.

  • 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 슬라이더; JLable 레이블; slider = 새 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

관련 문제