2016-12-30 18 views
3

getContentPane()。setBackground(Color.white)、 を試してみましたが、テーブルとスクロールペインを白く設定しようとしました。JPanelの背景色を設定する

@SuppressWarnings("serial") 
public class BalanceFrame extends JFrame { 

private JTable table; 
public BalanceFrame(String title, String value) throws Exception { 
    super(title); 
    SpringLayout springLayout = new SpringLayout(); 
    getContentPane().setLayout(springLayout); 

    JScrollPane scrollPane = new JScrollPane(); 
    springLayout.putConstraint(SpringLayout.NORTH, scrollPane, 0, SpringLayout.NORTH, getContentPane()); 
    springLayout.putConstraint(SpringLayout.WEST, scrollPane, 0, SpringLayout.WEST, getContentPane()); 
    springLayout.putConstraint(SpringLayout.SOUTH, scrollPane, 0, SpringLayout.SOUTH, getContentPane()); 
    springLayout.putConstraint(SpringLayout.EAST, scrollPane, 0, SpringLayout.EAST, getContentPane()); 
    getContentPane().add(scrollPane); 

    ResultSet res = Operations.writeBalanceResult(value); 
    JTable table = new JTable(Operations.writeResult(res)); 
    table.setAutoResizeMode(table.AUTO_RESIZE_OFF); 
    scrollPane.setViewportView(table); 




    for (int column = 0; column < table.getColumnCount(); column++) { 
     TableColumn tableColumn = table.getColumnModel().getColumn(column); 
     int preferredWidth = tableColumn.getMinWidth(); 
     int maxWidth = tableColumn.getMaxWidth(); 

     for (int row = 0; row < table.getRowCount(); row++) { 
      TableCellRenderer cellRenderer = table.getCellRenderer(row, column); 
      Component c = table.prepareRenderer(cellRenderer, row, column); 
      int width = c.getPreferredSize().width + table.getIntercellSpacing().width; 
      preferredWidth = Math.max(preferredWidth, width); 

      if (preferredWidth >= maxWidth) { 
       preferredWidth = maxWidth; 
       break; 
      } 
     } 

     TableCellRenderer headerRenderer = tableColumn.getHeaderRenderer(); 

     if (headerRenderer == null) { 
      headerRenderer = table.getTableHeader().getDefaultRenderer(); 
     } 

     Object headerValue = tableColumn.getHeaderValue(); 
     Component headerComp = headerRenderer.getTableCellRendererComponent(table, headerValue, false, false, 0, column); 
     preferredWidth = Math.max(preferredWidth, headerComp.getPreferredSize().width); 

     if (preferredWidth >= maxWidth) { 
      preferredWidth = maxWidth; 
      break; 
     } 

     tableColumn.setPreferredWidth(preferredWidth + 6); 
    } 



} 
} 

この私が色を変更するために得ることができないフレームのみで、それは別のクラスで、ここで作成されています - 私は正常にこの

を行うことによって色を変更するには、別のパネルを得ている

menuItemBalanceSheet.addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 
         try { 
          balanceFrame = new BalanceFrame("BalanceSheet", value); 

         } catch (Exception e1) { 
          e1.printStackTrace(); 
         } 
         balanceFrame.setSize(1200, 600); 
         balanceFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
         balanceFrame.setVisible(true); 
        } 
       }); 

companyPanel = new CompanyPanel(); 
companyPanel.setBackground(Color.white); 
+0

変更しようとしているのがバランスフレームですか? – Aaron

+0

@Aaronはいそれは – Zack

+1

です。より良いヘルプのためには、すぐに[mcve]を投稿してください。あなたの投稿に何枚目のアップノートがあるのか​​わからない – MasterBlaster

答えて

2

あなたは、スクロールペインのviewportscrollPane.getViewport().setBackground(Color.XXX)を使用しての背景を設定してみてくださいすることができます。

+0

これはまさに私が望んでいた、 ありがとうございました。 – Zack

+0

非透過コンポーネントをviewPortのビューとして設定すると、ビューポートが不明瞭になり、変更が表示されます。 – MadProgrammer

0

試してみてください。

balanceFrame.getContentPane().setBackgroundColor(Color.RED); 

OR

balanceFrame.setBackgroundColor(Color.RED); 
+0

それと運がない:\ – Zack

+0

私は私の応答を編集しました@Zack – Aaron

+0

ええ私は両方を試しました – Zack

関連する問題