2015-12-28 2 views
1

Эй, ребята, я делаю эту игру tic-tac-toe и хочу знать, как сделать другую колонку справа. Вы лучше поймете визуально:Как сделать столбец в java swing пакете

это то, что я сделал в настоящее время:

enter image description here

Но если я добавить еще одну кнопку он просто идет вниз по вертикали. Как сделать так, чтобы он шел горизонтально к середине, поэтому я могу сделать свою игру с тик-таком.

Код:

import java.awt.Dimension; 
import java.awt.Insets; 

import javax.swing.BorderFactory; 
import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JCheckBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

import sun.org.mozilla.javascript.internal.xml.XMLLib.Factory; 



public class TicTacToe { 
    JFrame frame; 
    JPanel contentPane; 
    JButton row1col1; 
    JButton row1col2; 
    JButton row1col3; 
    JButton row2col1; 
    JButton row2col2; 
    JButton row2col3; 
    JButton row3col1; 
    JButton row3col2; 
    JButton row3col3; 


    public TicTacToe() { 
     // TODO Auto-generated constructor stub 

     frame = new JFrame("Fds"); 
     contentPane = new JPanel(); 
     contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.Y_AXIS)); 
     contentPane.setBorder(BorderFactory.createEmptyBorder 
       (10, 10, 10, 10)); 

     row1col1 = new JButton(); 
     row1col1.setMargin(new Insets(10, 10, 10, 10)); 
     contentPane.add(row1col1); 

     row1col2 = new JButton(); 
     row1col2.setMargin(new Insets(10, 10, 10, 10)); 
     contentPane.add(row1col2); 

     row1col3 = new JButton(); 
     row1col3.setMargin(new Insets(10, 10, 10, 10)); 
     contentPane.add(row1col3); 


     row2col1 = new JButton(); 
     row2col1.setMargin(new Insets(10, 10, 10, 10)); 
     contentPane.add(row2col1); 

     row2col2 = new JButton(); 
     row2col2.setMargin(new Insets(10, 10, 10, 10)); 
     contentPane.add(row2col2); 

     row2col3 = new JButton(); 
     row2col3.setMargin(new Insets(10, 10, 10, 10)); 
     contentPane.add(row2col3); 



     frame.setContentPane(contentPane); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 


    } 


    private static void runGUI() { 
     JFrame.setDefaultLookAndFeelDecorated(true); 
     TicTacToe greeting = new TicTacToe(); 
     } 
     public static void main(String[] args) { 
     /* Methods that create and show a GUI should be 
     run from an event-dispatching thread */ 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
     runGUI(); 
     } 
     }); 


     } 


} 
+0

Вы можете использовать GridLayout вместо вашего BoxLayout. – Berger

ответ

2

Вам нужно будет использовать GridLayout вместо BoxLayout.

Менеджер компоновки сетки затем позаботится о размещении кнопок в сетке, как мода.

Что-то вроде так (непроверенные):

JButton[] grid = new JButton[9]; 
this.setLayout(new GridLayout(3,3,1,1)); 
for(int i = 0; i < 9; i++) { 
    JButton button = new JButton(); 
    ...//Attach event handlers, etc. 
    this.add(button); 
    grid.add(button); 
} 

Приведенный выше код должен создать сетку 3 х 3 и заполнить его с помощью кнопок.

+0

Как это сделать? Вы знаете? так что я могу настроить его на tic tac toe? У меня две две панели? –

+0

@ewrwr: Я обновляю свой ответ. – npinti

+0

вы можете просто заменить эту строку 'contentPane.setLayout (новый BoxLayout (contentPane, BoxLayout.Y_AXIS));' whit this one' contentPane.setLayout (новый GridLayout (3,3)); ' –

2

Это все о макете вы указали BoxLayout, которые ставят элементы управления по вертикали.

Просто используйте другой. Вы можете узнать больше о макете in the documentation

GridLayout, кажется, идеально подходит для вашего porpouse

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