1

我正在制作一个程序,输出一列中的数字 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();} 
   }
4

2 回答 2

4

在您的情况下最好使用JTable

但是您可以使用HTML 标签并执行以下操作:

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(...);  

但不建议这样做,因为您的文本可能会超出列。

于 2013-05-08T21:16:52.933 回答
3

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

其他经常被忽视的东西是JOptionPane使用JComponents的能力

在此处输入图像描述

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);
            }
        });
    }
}

如果这些东西对你有用的话,它还有一个额外的好处,那就是提供一个基础,你可以从中支持诸如“复制”甚至可编辑数据之类的操作……

您可以在如何使用对话框中找到更多详细信息

于 2013-05-08T21:52:23.113 回答