如何使输出进入不同的列?

时间:2013-05-08 21:13:05

标签: java swing for-loop multiple-columns

我正在制作一个输出的程序,一列中的数字1-10,另一列中的数字的平方,以及第三列中的数字。

如何使程序更好一些,以便列真的不同。 对于每一列我都想添加标题(数字,数字平方,数字立方体)。

//抱歉我的英文不好

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

public class Del2upp3 extends JFrame implements ActionListener 
{
    int i;
    JLabel label2 = new JLabel();
    JPanel panel = new JPanel();
    JButton button = new JButton("Press");
    Del2upp3()
    {
        super ("Panel"); setSize (200,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container con = this.getContentPane();
        con.add(panel);
        button.addActionListener(this);
        panel.add(label2);
        panel.add(button);
        setVisible(true);

    } 
    public void actionPerformed(ActionEvent event)
    {        
            Object source = event.getSource();
            if (source == button)  
        {

            StringBuilder string = new StringBuilder();
                for( i = 1; i< 11; i++){

                string.append("\n     ").append(i);
                string.append(", ").append(i*i);
                string.append(", ").append(i*i*i);

        }
               JOptionPane.showMessageDialog(null, string,"Data",
               JOptionPane.PLAIN_MESSAGE);
               setSize (200,200);
               setVisible(true); 
                 i = 0;
         }}
        public static void main(String[] args){new Del2upp3();} 
   }

2 个答案:

答案 0 :(得分:4)

最好在你的情况下使用JTable

但您可以使用HTML Tags并执行以下操作:

builder.append("<html><table border=1><tr><td>column1</td><td>column2</td><td></tr>");
string.append("<tr><td>");
string.append(.....);
string.append("</td><td>");
...
string.append("</td></tr>");
string.append("</table></html>");

<击>或者:

<击>
textArea.setText("column1\t\tcolumn2\n");  
textArea.append("column1\t\tcolumn2\n");  
textArea.append(...);  

但不推荐这样做,因为你的文字可以不在列中。

答案 1 :(得分:3)

使用HTML格式化String是一个很好且经常被忽视的想法(+1 to Maroun)

其他经常被忽略的是JOptionPane使用JComponent的能力

enter image description here

import java.awt.EventQueue;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;

public class TableOptionPane {

    public static void main(String[] args) {
        new TableOptionPane();
    }

    public TableOptionPane() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                Integer[][] values = new Integer[10][3];
                StringBuilder string = new StringBuilder();
                for (int i = 1; i < 11; i++) {
                    values[i - 1][0] = i;
                    values[i - 1][1] = i * i;
                    values[i - 1][2] = i * i * i;
                }
                DefaultTableModel model = new DefaultTableModel(values, new Object[]{"i", "i * i", "i * i * i"});
                JTable table = new JTable(model);
                JOptionPane.showMessageDialog(null, new JScrollPane(table), "Data", JOptionPane.PLAIN_MESSAGE);
            }
        });
    }
}

如果这些东西对您有用,那么提供一个基础可以支持诸如“复制”甚至是数据的可操作性这样的操作的附加利益......

您可以在How to use Dialogs

找到更多详情