Java 如何在Jtable上正确对齐标题边框

Java 如何在Jtable上正确对齐标题边框,java,swing,Java,Swing,我正在尝试用java语言构建小型应用程序。我开始使用此链接: 一切都很好。我完成了那项任务,但剩下的一件事是我正试图删除额外的标题边界。我试图缩小标题边界,但它仍然不起作用。任何有好建议的人都试着和我分享 package swings.application.framework; import java.awt.*; import java.awt.event.ActionEvent ; import java.awt.event.ActionListener; im

我正在尝试用java语言构建小型应用程序。我开始使用此链接:

一切都很好。我完成了那项任务,但剩下的一件事是我正试图删除额外的标题边界。我试图缩小标题边界,但它仍然不起作用。任何有好建议的人都试着和我分享

    package swings.application.framework;

    import java.awt.*;
    import java.awt.event.ActionEvent

;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Inf3rNix
 */
public class KidsProblemTable {
 private static JButton okbtn;

           private static     JFrame frame;
    public static void main(String[] args) {
        Runnable runner = new Runnable() {

            @Override
            public void run() {
                Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();

         frame = new JFrame("Kids Table");


                Border border = LineBorder.createGrayLineBorder();
                frame.setLayout(null);

                frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
                JLabel Heading = new JLabel("My Result");
                Heading.setFont(new Font("Gabriola", Font.ITALIC, 56));
                Heading.setForeground(Color.BLUE);
                Heading.setBounds(550, -60, 300, 200);

                JLabel Heading2 = new JLabel("Nice Job! Here are your results...");
                Heading2.setFont(new Font("Buxton Sketch", Font.ITALIC, 26));
                Heading2.setForeground(Color.BLUE);
                Heading2.setBounds(500, 10, 600, 200);

                JLabel Heading3 = new JLabel();

                String str = "You got 5 correct answer out of 7 question";
                Heading3.setText("<html><a href=' ' style='color:rgb(248,116,49);'>" + str + "</a></html>");
                Heading3.setFont(new Font("Andy", Font.PLAIN, 20));

                Heading3.setBounds(500, 70, 600, 200);
                JPanel panel1 = new JPanel();
                JPanel panel2 = new JPanel();
                Border border1 = BorderFactory.createTitledBorder("Exercise");



                panel1.setBounds(150, 200, 1000, 190);

                String column = "Questions".toUpperCase();

                //  AttributedString as = new AttributedString(column);
                //    Font plainFont = new Font("Times New Roman", Font.PLAIN, 24);
                //   as.addAttribute(TextAttribute.FONT, plainFont);
                //  as.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON,0,8 );
                String column1 = "Problem".toUpperCase();
                String column2 = "Answer".toUpperCase();
                String column3 = "Answer".toUpperCase();
                String results = "results".toUpperCase();

                Object rowData[][] = {{"1", "3+9", "12", "12", "Correct !"},
                    {"2", "4+3", "7", "7", "Correct !"},
                    {"3", "10+8", "17", "18", "Sorry :("},
                    {"4", "5+1", "6", "6", "Correct !"},
                    {"5", "10+8", "18", "18", "Correct !"},
                    {"6", "8+2", "10", "10", "Correct !"},
                    {"7", "5+6", "4", "11", "Sorry :("}
                };
                Object columnNames[] = {column, column1, column2, column3, results};

                DefaultTableModel model = new DefaultTableModel(rowData, columnNames);
                JTable tb1 = new JTable(model) {


                    //when checking if a cell is editable always return false



                    public boolean isCellEditable(int rowIndex, int colIndex) {
                        return false;   //Disallow the editing of any cell
                    }

                };
                //JTable table1 = new JTable(rowData, columnNames1);
                tb1.setBackground(Color.getHSBColor(153, 0, 91));


                JScrollPane scrollPane1 = new JScrollPane(tb1);
                Border raisedbevel = BorderFactory.createRaisedBevelBorder();
                Border loweredbevel = BorderFactory.createLoweredBevelBorder();
                Border raisedetched = BorderFactory.createEtchedBorder(EtchedBorder.RAISED);
             //  ImageIcon icon = createImageIcon("images/wavy.gif", "wavy-line border icon");


              okbtn=new JButton("Press Ok to Exit");
                           okbtn.setBorder(raisedbevel);

              okbtn.setFont(new Font("Vani", Font.BOLD, 12));
                okbtn.setBounds(575, 390, 150, 50);
                panel2.add(scrollPane1, BorderLayout.CENTER);
                okbtn.addActionListener(new buttonActionListener());
                frame.add(Heading);
                frame.add(Heading2);
                frame.add(Heading3);
                frame.add(okbtn);
                frame.add(panel1);

                panel2.setBorder(border1);
                panel1.add(panel2);

                frame.setSize(500, 500);



                frame.setVisible(true);

            }
        };
        EventQueue.invokeLater(runner);
    }

    private static class buttonActionListener implements ActionListener {



        @Override
        public void actionPerformed(ActionEvent ae) {

        if(ae.getSource()==okbtn){
            JOptionPane.showMessageDialog(null, "All the best !!!");
            WindowEvent winClosingEvent = new WindowEvent(frame, WindowEvent.WINDOW_CLOSING );
             Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent( winClosingEvent );

        }

        }
    }
}
package.application.framework;
导入java.awt.*;
导入java.awt.event.ActionEvent
;
导入java.awt.event.ActionListener;
导入java.awt.event.WindowEvent;
导入javax.swing.*;
导入javax.swing.border.border;
导入javax.swing.border.EtchedBorder;
导入javax.swing.border.LineBorder;
导入javax.swing.table.DefaultTableModel;
/**
*
*@author Inf3rNix
*/
公共类问题{
私有静态JButton-okbtn;
私有静态JFrame;
公共静态void main(字符串[]args){
Runnable runner=新的Runnable(){
@凌驾
公开募捐{
维度screensize=Toolkit.getDefaultToolkit().getScreenSize();
框架=新的JFrame(“儿童表”);
Border Border=LineBorder.createGrayLineBorder();
frame.setLayout(空);
frame.setDefaultCloseOperation(关闭时退出frame);
JLabel Heading=新JLabel(“我的结果”);
标题.setFont(新字体(“Gabriola”,Font.ITALIC,56));
标题.设置前景(颜色.蓝色);
标题.立根(550,-60300200);
JLabel Heading2=新的JLabel(“干得好!这是你的结果…”);
标题2.setFont(新字体(“Buxton Sketch”,Font.ITALIC,26));
标题2.设置前景(颜色:蓝色);
头2.立根(500,1060200);
JLabel Heading3=新的JLabel();
String str=“你从7个问题中得到了5个正确答案”;
标题3.setText(“”);
Heading3.setFont(新字体(“Andy”,Font.PLAIN,20));
头3.立根(500、70、600、200);
JPanel panel1=新的JPanel();
JPanel panel2=新的JPanel();
Border border1=BorderFactory.createTitleBorder(“练习”);
镶板1.立根(1502001000190);
String column=“Questions.toUpperCase();
//AttributedString as=新的AttributedString(列);
//Font plainFont=新字体(“泰晤士报新罗马”,Font.PLAIN,24);
//as.addAttribute(TextAttribute.FONT,plainFont);
//as.addAttribute(texttribute.UNDERLINE,texttribute.UNDERLINE_ON,0,8);
String column1=“Problem”.toUpperCase();
String column2=“Answer”.toUpperCase();
String column3=“Answer”.toUpperCase();
String results=“results”.toUpperCase();
对象行数据[][]={{“1”、“3+9”、“12”、“12”、“正确!”,
{“2”,“4+3”,“7”,“7”,“正确!”,
{“3”,“10+8”,“17”,“18”,“对不起:(“},
{“4”,“5+1”,“6”,“6”,“正确!”,
{“5”,“10+8”,“18”,“18”,“正确!”,
{“6”,“8+2”,“10”,“10”,“正确!”,
{“7”,“5+6”,“4”,“11”,“对不起:(“}
};
对象columnNames[]={column,column1,column2,column3,results};
DefaultTableModel=新的DefaultTableModel(行数据、列名称);
JTable tb1=新JTable(型号){
//检查单元格是否可编辑时,始终返回false
公共布尔值isCellEditable(int rowIndex,int colIndex){
return false;//不允许编辑任何单元格
}
};
//JTable table 1=新的JTable(行数据,列名称1);
tb1.挫折背景(Color.getHSBColor(153,0,91));
JScrollPane scrollPane1=新的JScrollPane(tb1);
Border Raised斜面=BorderFactory.CreateRaisedBevelOrder();
Border Lowered斜面=BorderFactory.CreateLoweredBevelOrder();
Border raisedetched=BorderFactory.createEtchedBorder(EtchedBorder.RAISED);
//ImageIcon icon=createImageIcon(“images/wavy.gif”,“波浪线边框图标”);
okbtn=新JButton(“按Ok退出”);
okbtn.立根订单(升起斜角);
okbtn.setFont(新字体(“Vani”,Font.BOLD,12));
okbtn.立根(575390150,50);
panel2.add(滚动窗格1,BorderLayout.CENTER);
okbtn.addActionListener(新按钮ActionListener());
框架.添加(标题);
框架。添加(标题2);
框架。添加(标题3);
帧添加(okbtn);
框架。添加(面板1);
第2组:订单(边界1);
第1组。添加(第2组);
框架。设置尺寸(500500);
frame.setVisible(true);
}
};
调用器(运行器);
}
私有静态类buttonActionListener实现ActionListener{
@凌驾
已执行的公共无效行动(行动事件ae){
如果(ae.getSource()==okbtn){
showMessageDialog(null,“一切都好!!!”);
WindowEvent winClosingEvent=新的WindowEvent(帧,WindowEvent.WINDOW\u关闭);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(winClosingEvent);
}
}
}
}
我发现了你的问题, 您已将滚动窗格添加到panel2,如下所示:

panel2.add(scrollPane1, BorderLayout.CENTER);
但您没有将布局设置为panel2的BorderLayout。 然后将panel1的布局设置为null 请参阅此代码

            JPanel panel1 = new JPanel();
            panel1.setLayout(null);//add to your code
            JPanel panel2 = new JPanel();
            panel2.setLayout(new BorderLayout());//add to your code
            panel2.setBounds(0,0,800,120);//add to your code
输出:

可能几小时后会删除此图像 我发现了你的问题, 您已将滚动窗格添加到panel2,如下所示:

panel2.add(scrollPane1, BorderLayout.CENTER);
但是你