Я новичок в свинг, и я хочу, чтобы создать таблицу, имеющую такую форму:JTable расщепляющие ячейки. Как
Так как разбить ячейку, как видно из таблицы? У вас есть полезные ссылки или учебники или идеи?
Я новичок в свинг, и я хочу, чтобы создать таблицу, имеющую такую форму:JTable расщепляющие ячейки. Как
Так как разбить ячейку, как видно из таблицы? У вас есть полезные ссылки или учебники или идеи?
Это выглядит как карточная карта для боулинга. Исходя из этого предположения, количество столбцов фиксировано, а количество записей составляет 6 или меньше. Поскольку вам, скорее всего, не понадобится прокрутка, я бы рекомендовал фиксированную сетку компонентов вместо JTable.
Это может быть легко осуществлено с использованием GridBagLayout. Для имени я бы использовал JTextArea. Для двух очков для каждого кадра я бы использовал JTextFields. Для нижнего компонента с двумя столбцами, который содержит оценку фрейма, я бы, вероятно, использовал JLabel.
Поместите все это на JPanel и заново создайте панель для каждого котелка.
EDIT: Вот быстрый макет, чтобы показать концепцию. Не обязательно визуально красиво, но я оставлю это в качестве упражнения для читателя:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BowlingScoreCard implements Runnable
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new BowlingScoreCard());
}
public void run()
{
JFrame frame = new JFrame("Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(createScorecard(4), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
private JPanel createScorecard(int numPlayers)
{
JPanel p = new JPanel(new GridBagLayout());
p.add(new JLabel("Player"), gbc(0, 0, 1, 1));
for (int x = 1; x <= 10; x++)
{
p.add(new JLabel(Integer.toString(x)), gbc(x, 0, 1, 1));
}
for (int y = 1; y <= numPlayers; y++)
{
JTextArea textArea = new JTextArea(2, 10);
p.add(textArea, gbc(0, y, 1, 1));
for (int i = 1; i <= 9; i++)
{
p.add(createFrame(2), gbc(i, y, 1, 1));
}
p.add(createFrame(3), gbc(10, y, 1, 1));
}
return p;
}
private JPanel createFrame(int entries)
{
JLabel label = new JLabel(" ");
label.setBackground(Color.GRAY);
JPanel p = new JPanel(new GridBagLayout());
p.setBorder(BorderFactory.createLineBorder(Color.GRAY, 1));
for (int i = 0; i < entries; i++)
{
p.add(new JTextField(3), gbc(i, 0, 1, 1));
}
p.add(label, gbc(0, 1, 2, 1));
return p;
}
private GridBagConstraints gbc(int x, int y, int colspan, int rowspan)
{
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = colspan;
gbc.gridheight = rowspan;
gbc.weightx = 0;
gbc.weighty = 0;
gbc.anchor = GridBagConstraints.CENTER;
gbc.fill = GridBagConstraints.NONE;
return gbc;
}
}
* «У вас какие-либо полезные ссылки или учебники или идея?» * Моя идея «использовать таблицы для табличных данных» только , Поскольку это явно не «табличные данные», используйте другой компонент или группу компонентов. Как в стороне, это значит представлять карточку с оценками для боулинга с 10 булавками? –
Взгляните на [эти примеры] (http://www.crionics.com/public/swing_examples/JTableExamples4.html) – MadProgrammer
@MadProgrammer это очень полезно, спасибо – AmiraGL